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

onl*_*ine 4 json yaml prometheus kubernetes-helm

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

$ 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
Run Code Online (Sandbox Code Playgroud)

那怎么用呢?

Nic*_*lay 13

你想要实现以下(values.yamlprometheus掌舵图切割):

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'
    }
Run Code Online (Sandbox Code Playgroud)

根据掌舵文档,结构:

alertmanager:
  ingress:
    annotations:
      alb.ingress.kubernetes.io/scheme: internet-facing
Run Code Online (Sandbox Code Playgroud)

--set alertmanager.ingress.annotations."alb\.ingress\.kubernetes\.io/scheme"=internet-facing
Run Code Online (Sandbox Code Playgroud)

如果您想再添加一个注释,它将是另一个--set语句:

--set alertmanager.ingress.annotations."alb\.ingress\.kubernetes\.io/tags"="Environment=dev\,Team=test"
Run Code Online (Sandbox Code Playgroud)

还有一件事,name: "value1,value2"就是--set name=value1\,value2,这样Environment=dev,Team=test"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"
Run Code Online (Sandbox Code Playgroud)

ps上面的命令失败,因为您还需要为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
Run Code Online (Sandbox Code Playgroud)