使用 Helm 在 Kubernetes 中部署 Beyla
注意
有关各种 Helm 配置选项的更多详细信息,请参阅
目录
从 Helm 部署 Beyla
首先,您需要将 Grafana Helm 仓库添加到 Helm
helm repo add grafana https://grafana.github.io/helm-charts
以下命令将使用默认配置在 beyla
命名空间中部署一个 Beyla DaemonSet
helm install beyla -n beyla --create-namespace grafana/beyla
默认的 Beyla 配置
- 在 Pod HTTP 端口
9090
、/metrics
路径下将指标导出为 Prometheus 指标。 - 尝试对集群中的所有应用程序进行插桩。
- 默认情况下仅提供应用级指标,并排除 网络级指标
- 配置 Beyla 使用 Kubernetes 元数据标签装饰指标,例如
k8s.namespace.name
或k8s.pod.name
配置 Beyla
您可能需要覆盖 Beyla 的默认配置。例如,将指标和/或 span 导出为 OpenTelemetry 而不是 Prometheus,或者限制要进行插桩的服务数量。
您可以使用自己的值覆盖默认的 Beyla 配置选项。
例如,创建一个包含自定义配置的 helm-beyla.yml
文件
config:
data:
# Contents of the actual Beyla configuration file
discovery:
services:
- k8s_namespace: demo
- k8s_namespace: blog
routes:
unmatched: heuristic
config.data
部分包含一个 Beyla 配置文件,该文件在 Beyla 配置选项文档中进行了说明。
然后使用 -f
标志将覆盖的配置传递给 helm
命令。例如
helm install beyla grafana/beyla -f helm-beyla.yml
或者,如果 Beyla chart 之前已经部署过
helm upgrade beyla grafana/beyla -f helm-beyla.yml
配置 Beyla 元数据
如果 Beyla 使用 Prometheus 导出器导出数据,您可能需要覆盖 Beyla Pod 注解,以便 Prometheus scraper 能够发现它。您可以将以下部分添加到 helm-beyla.yml
示例文件
podAnnotations:
prometheus.io/scrape: "true"
prometheus.io/path: "/metrics"
prometheus.io/port: "9090"
类似地,Helm chart 允许覆盖涉及 Beyla 部署的多个资源的名称、标签和注解,例如服务帐户、集群角色、安全上下文等。Beyla Helm chart 文档介绍了各种配置选项。
为 Helm 配置提供 Secret
如果您通过 OpenTelemetry Endpoint 直接将指标和追踪提交到 Grafana Cloud,您需要通过 OTEL_EXPORTER_OTLP_HEADERS
环境变量提供凭证。
推荐的方法是将该值存储在 Kubernetes Secret 中,然后在 Helm 配置中指定引用它的环境变量。
例如,部署以下 Secret
apiVersion: v1
kind: Secret
metadata:
name: grafana-secret
type: Opaque
stringData:
otlp-headers: "Authorization=Basic ...."
然后通过 envValueFrom
部分在 helm-config.yml
文件中引用它
env:
OTEL_EXPORTER_OTLP_ENDPOINT: "<...your Grafana Cloud OTLP endpoint URL...>"
envValueFrom:
OTEL_EXPORTER_OTLP_HEADERS:
secretKeyRef:
key: otlp-headers
name: grafana-secret