json - 如何使用 --set 为 Prometheus 图表设置值?

标签 json yaml prometheus kubernetes-helm

例如设置alertmanager.ingress.annotations添加两个item,这两种方法都不起作用:

$ helm install stable/prometheus \
  --set alertmanager.ingress.enabled=true \
  --set "alertmanager.ingress.annotations={alb.ingress.kubernetes.io/scheme: internet-facing, alb.ingress.kubernetes.io/tags: Environment=dev,Team=test}"

Error: YAML parse error on prometheus/templates/alertmanager-ingress.yaml: error unmarshaling JSON: json: cannot unmarshal array into Go struct field .annotations of type map[string]string
$ helm install stable/prometheus \
  --set alertmanager.ingress.enabled=true \
  --set "alertmanager.ingress.annotations={'alb.ingress.kubernetes.io/scheme': 'internet-facing', 'alb.ingress.kubernetes.io/tags': 'Environment=dev,Team=test'}"

Error: YAML parse error on prometheus/templates/alertmanager-ingress.yaml: error unmarshaling JSON: json: cannot unmarshal array into Go struct field .annotations of type map[string]string

那么如何使用呢?

最佳答案

您希望实现以下目标(从 prometheus helm 图表中截取 values.yaml):

alertmanager:
  ingress:
    ## If true, alertmanager Ingress will be created
    ##
    enabled: true

    ## alertmanager Ingress annotations
    ##
    annotations: {
      alb.ingress.kubernetes.io/scheme: internet-facing, 
      alb.ingress.kubernetes.io/tags: 'Environment=dev,Team=test'
    }

根据helm documentation ,结构:

alertmanager:
  ingress:
    annotations:
      alb.ingress.kubernetes.io/scheme: internet-facing

--set alertmanager.ingress.annotations."alb\.ingress\.kubernetes\.io/scheme"=internet-facing

如果你想再添加一个注释,那就是多一个--set语句:

--set alertmanager.ingress.annotations."alb\.ingress\.kubernetes\.io/tags"="Environment=dev\,Team=test"

还有一件事,name: "value1,value2"--set name=value1\,value2,所以 Environment=dev,Team=测试“Environment=dev\,Team=test”

最终的 helm 命令是:

helm install stable/prometheus --set alertmanager.ingress.enabled=true --set alertmanager.ingress.annotations."alb\.ingress\.kubernetes\.io/scheme"=internet-facing --set alertmanager.ingress.annotations."alb\.ingress\.kubernetes\.io/tags"="Environment=dev\,Team=test"

附:上面的命令失败,因为您还需要为alertmanager指定域名。 正确的是:

helm install stable/prometheus --set alertmanager.ingress.enabled=true --set alertmanager.ingress.annotations."alb\.ingress\.kubernetes\.io/scheme"=internet-facing --set alertmanager.ingress.annotations."alb\.ingress\.kubernetes\.io/tags"="Environment=dev\,Team=test" --set alertmanager.ingress.hosts[0]=alertmanager.domain.com

关于json - 如何使用 --set 为 Prometheus 图表设置值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48523661/

相关文章:

json - 防止 Aeson parseJSON 中的未知字段名称

java - 通过单击按钮和 JSON 增加 TextView

json - 无法反序列化结构 ("value of type is not assignable to type")

mysql - Symfony+ Doctrine : Correct YAML syntax for default value of boolean field

docker - Prometheus查询以监视按名称和图像过滤的Docker容器

javascript - ExtJS 加载嵌套 JSON

java - 通过java在snappy数据中插入json对象时出现错误

ruby yaml ypath 像 xpath?

prometheus - 普罗米修斯速率函数和区间选择

java - 监控 Kafka 主题的消费者数量