bitnamicharts/grafana-tempoGrafana Tempo 是一款分布式追踪系统,与 Grafana 具有开箱即用的集成能力。它具备高度可扩展性,支持多种主流追踪协议。Bitnami 提供的此 Helm Chart 旨在通过 Helm 包管理器在 Kubernetes 集群中快速部署 Grafana Tempo,适用于开发和生产环境的容器化部署需求。
Grafana Tempo 官方概述
商标说明:本软件包由 Bitnami 打包。所提及的商标分属各自公司所有,使用此类商标不意味着任何关联或背书。
自 2025 年 8 月 28 日起,Bitnami 将升级其公共镜像目录,通过新的 Bitnami Secure Images 计划 提供精选的、专注于安全性的加固镜像。此次过渡包括:
tempo.yaml 配置文件及覆盖配置,适应不同场景需求。consolehelm install my-release oci://registry-1.docker.io/bitnamicharts/grafana-tempo
如需在生产环境使用 Grafana Tempo,建议尝试 VMware Tanzu Application Catalog,即 Bitnami 目录的商业版本。
添加 Helm 仓库(如未配置):
consolehelm repo add bitnami [***] helm repo update
安装 Chart:
使用自定义发布名称(如 my-release)安装:
consolehelm install my-release oci://REGISTRY_NAME/REPOSITORY_NAME/grafana-tempo
注意:需替换
REGISTRY_NAME和REPOSITORY_NAME为实际 Helm 仓库地址。Bitnami 官方仓库示例:REGISTRY_NAME=registry-1.docker.io,REPOSITORY_NAME=bitnamicharts。
验证部署:
consolehelm list # 查看所有发布 kubectl get pods # 检查 Pod 状态
Bitnami Charts 允许为部署中的所有容器设置资源请求(requests)和限制(limits),通过 resources 参数配置。生产环境中必须设置资源请求,且需根据实际场景调整。
可通过 resourcesPreset 参数应用预设资源配置(详见 bitnami/common Chart),但生产环境建议手动配置以适配具体需求。更多信息参考 Kubernetes 容器资源管理文档。
生产环境强烈建议使用不可变标签(immutable tags),避免因标签更新导致部署自动变更。Bitnami 会在主容器版本更新、重大变更或存在严重漏洞时发布新 Chart 以更新容器镜像。
通过设置 metrics.enabled=true 可启用 Prometheus 集成,暴露 Grafana Tempo 原生 Prometheus 端口,并为 Service 添加自动发现注解。
需预先部署 Prometheus 或 Prometheus Operator。推荐安装 Bitnami Prometheus Helm Chart 或 Bitnami Kube Prometheus Helm Chart。
设置 metrics.serviceMonitor.enabled=true 可部署 ServiceMonitor 对象。需确保集群已安装 Prometheus Operator CRDs,否则会报错:
textno matches for kind "ServiceMonitor" in version "monitoring.coreos.com/v1"
Tempo 配置文件 tempo.yaml 适用于所有组件(distributor、compactor、ingester、querier、queryFrontend),通过 tempo.configuration 参数配置。配置项参考 Grafana Tempo 官方文档。
也可通过 tempo.existingConfigmap 指定已存在的 ConfigMap 存储配置。
可为各组件(distributor、compactor、ingester、querier、queryFrontend、vulture)添加额外环境变量,支持以下方式:
直接指定:
yamlcompactor: extraEnvVars: - name: LOG_LEVEL value: error # 其他组件类似
通过 ConfigMap/Secret:
使用 extraEnvVarsCM(ConfigMap 名称)或 extraEnvVarsSecret(Secret 名称)引用现有配置。
可通过各组件的 sidecars 参数添加额外容器(如指标/日志采集器):
yamlsidecars: - name: your-image-name image: your-image imagePullPolicy: Always ports: - name: portname containerPort: 1234
如需暴露边车容器端口,可通过 service.extraPorts 配置:
yamlservice: extraPorts: - name: extraPort port: *** targetPort: ***
注意:本 Chart 已包含 Prometheus exporter 边车容器(如需启用,设置
--enable-metrics=true),sidecars参数仅用于添加额外容器。
通过 initContainers 参数添加初始化容器:
yamlinitContainers: - name: your-image-name image: your-image imagePullPolicy: Always ports: - name: portname containerPort: 1234
可通过 affinity 参数自定义 Pod 亲和性,或使用 bitnami/common Chart 提供的预设:
podAffinityPreset:Pod 亲和性预设podAntiAffinityPreset:Pod 反亲和性预设nodeAffinityPreset:节点亲和性预设上述预设需在各组件(distributor、compactor 等)的配置项下设置。
如需对接外部 Memcached(如托管缓存服务或共享缓存),可通过 externalMemcached 参数配置,并禁用内置 Memcached:
consolememcached.enabled=false externalMemcached.host=myexternalhost externalMemcached.port=***
Helm Chart 部署的备份与恢复需通过 Velero 工具实现,具体步骤参考 使用 Velero 备份恢复指南。
Bitnami grafana-tempo 镜像 将 ingester 数据存储在容器内 /bitnami 路径,通过 Persistent Volume Claims(PVC)实现数据持久化。
| 名称 | 描述 | 默认值 |
|---|---|---|
global.imageRegistry | 全局 Docker 镜像仓库 | "" |
global.imagePullSecrets | 全局 Docker 镜像拉取密钥数组 | [] |
global.defaultStorageClass | 全局默认 PV 存储类 | "" |
global.storageClass | (已弃用)使用 global.defaultStorageClass 替代 | "" |
global.security.allowInsecureImages | 是否允许跳过镜像验证 | false |
global.compatibility.openshift.adaptSecurityContext | 适配 OpenShift restricted-v2 SCC 的安全上下文(可选值:auto/force/disabled) | auto |
| 名称 | 描述 | 默认值 |
|---|---|---|
kubeVersion | 覆盖 Kubernetes 版本 | "" |
nameOverride | 部分覆盖资源全名 | "" |
fullnameOverride | 完全覆盖资源全名 | "" |
commonLabels | 添加到所有资源的标签 | {} |
commonAnnotations | 添加到所有资源的注解 | {} |
clusterDomain | Kubernetes 集群域名 | cluster.local |
extraDeploy | 额外部署的 Kubernetes 对象数组 | [] |
diagnosticMode.enabled | 启用诊断模式(禁用探针并覆盖命令) | false |
diagnosticMode.command | 诊断模式下覆盖容器命令 | ["sleep"] |
diagnosticMode.args | 诊断模式下覆盖容器参数 | ["infinity"] |
| 名称 | 描述 | 默认值 |
|---|---|---|
tempo.image.registry | Grafana Tempo 镜像仓库 | REGISTRY_NAME |
tempo.image.repository | Grafana Tempo 镜像仓库路径 | REPOSITORY_NAME/grafana-tempo |
tempo.image.digest | 镜像摘要(设置后覆盖标签) | "" |
tempo.image.pullPolicy | 镜像拉取策略 | IfNotPresent |
tempo.image.pullSecrets | 镜像拉取密钥 | [] |
tempo.memBallastSizeMbs | 内存压舱大小(MB) | 1024 |
tempo.dataDir | 数据存储目录 | /bitnami/grafana-tempo/data |
tempo.traces.jaeger.grpc | 启用 Jaeger GRPC 追踪接收 | true |
tempo.traces.jaeger.thriftBinary | 启用 Jaeger Thrift Binary 追踪接收 | false |
tempo.traces.jaeger.thriftCompact | 启用 Jaeger Thrift Compact 追踪接收 | false |
tempo.traces.jaeger.thriftHttp | 启用 Jaeger Thrift HTTP 追踪接收 | true |
tempo.traces.otlp.http | 启用 OTLP HTTP 追踪接收 | false |
tempo.traces.otlp.grpc | 启用 OTLP GRPC 追踪接收 | false |
tempo.traces.opencensus | 启用 OpenCensus 追踪接收 | false |
tempo.traces.zipkin | 启用 Zipkin 追踪接收 | false |
tempo.configuration | Tempo 配置内容 | "" |
tempo.existingConfigmap | 现有配置 ConfigMap 名称 | "" |
tempo.overridesConfiguration | 配置覆盖内容 | "" |
tempo.existingOverridesConfigmap | 现有覆盖配置 ConfigMap 名称 | "" |
tempo.containerPorts.web | Web 端口 | 3200 |
tempo.containerPorts.grpc | GRPC 端口 | 9095 |
tempo.containerPorts.gossipRing | Gossip Ring 端口 | 7946 |
tempo.gossipRing.service.ports.http | Gossip Ring 无头服务端口 | 7946 |
tempo.gossipRing.service.annotations | Gossip Ring 服务额外注解 | {} |
| 名称 | 描述 | 默认值 |
|---|---|---|
compactor.enabled | 是否启用 Compactor 部署 | true |
compactor.extraEnvVars | Compactor 额外环境变量数组 | [] |
compactor.extraEnvVarsCM | 存储额外环境变量的现有 ConfigMap 名称 | "" |
compactor.extraEnvVarsSecret | 存储额外环境变量的现有 Secret 名称 | "" |
compactor.command | 覆盖容器命令 | [] |
compactor.args | 覆盖容器参数 | [] |
compactor.replicaCount | Compactor 副本数 | 1 |
compactor.livenessProbe.enabled | 是否启用存活探针 | true |
compactor.livenessProbe.initialDelaySeconds | 存活探针初始延迟(秒) | - |
注意:完整参数列表请参考 GitHub 文档(原文档因长度限制被截断)。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务