使用helm --set配置additionalScrapeConfigs遇YAML解析错误求助
问题排查:Helm配置Prometheus Operator additionalScrapeConfigs报错
背景
通过Helm部署包含Bitnami Prometheus Operator的应用,尝试通过--set参数配置additionalScrapeConfigs采集自定义指标,Helm部署成功但Prometheus Operator日志报错:
sync "my-application-namespace/my-application-kube-prome-prometheus" failed: creating config failed: generating config failed: generate additional scrape configs: unmarshalling additional scrape configs failed: yaml: did not find expected key
使用的Helm命令如下:
helm upgrade my-application ./.helm \ --install --wait --atomic --set some_variable=1234 # Below is the interesting part: --set kube-prometheus.prometheus.additionalScrapeConfigs.enabled=true --set kube-prometheus.prometheus.additionalScrapeConfigs.type=internal --set kube-prometheus.prometheus.additionalScrapeConfigs.internal.jobList="- job_name: 'my-application-metric' \ static_configs: \ - targets: ['my-application-metrics-service:5002'] \ labels: \ app: my-application" \ --set another_variable=54321
待解决问题
- 排查
additionalScrapeConfigs配置中的明显错误(如YAML空格、格式问题) - 运行中的Pod内,Prometheus相关配置YAML的存储位置
问题1:配置错误排查
你的jobList配置存在两个核心问题:
- YAML缩进不规范:通过
--set传递多行YAML时,换行后的缩进逻辑混乱,导致解析时层级识别错误。 - 字符串格式问题:多行YAML作为
--set的字符串值,未使用正确的多行块格式,容易引发转义和解析异常。
修正后的--set参数如下:
--set kube-prometheus.prometheus.additionalScrapeConfigs.internal.jobList="|- job_name: 'my-application-metric' static_configs: - targets: ['my-application-metrics-service:5002'] labels: app: my-application"
说明:
|-是YAML多行块标记,保留换行且去掉末尾空行,符合Prometheus配置的格式要求- 所有行统一使用2个空格缩进,确保YAML层级结构正确
- 在GitHub Action执行时,该格式能避免shell自动篡改换行或缩进
问题2:Pod内配置文件位置
Prometheus Operator生成的配置会注入到Prometheus Pod中,核心位置:
- 主配置文件:
/etc/prometheus/prometheus.yml,additionalScrapeConfigs的内容会合并到该文件的scrape_configs段内 - 额外配置片段:若使用ConfigMap挂载额外配置,通常存储在
/etc/prometheus/config_out/目录下,可通过Pod的volumeMounts字段确认具体路径
查看配置的命令示例:
# 进入Prometheus Pod kubectl exec -it <prometheus-pod-name> -n <namespace> -- /bin/sh # 查看主配置文件 cat /etc/prometheus/prometheus.yml # 查看额外配置片段 ls /etc/prometheus/config_out/ cat /etc/prometheus/config_out/*.yaml
内容的提问来源于stack exchange,提问作者David Nordvall
相关产品推荐
相关产品推荐

