Как использовать --set для установки значений с помощью диаграммы Прометея?

Например, установите 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

Так как это использовать?


person online    schedule 30.01.2018    source источник


Ответы (1)


Вы хотите достичь следующего (вырезано из values.yaml из prometheus диаграммы штурвала):

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'
    }

Согласно документации по руководству, структура:

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

is

--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=test это "Environment=dev\,Team=test".

Последняя команда руля:

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"

p.s. Вышеупомянутая команда не работает, потому что вам также необходимо указать доменное имя для 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
person nickgryg    schedule 31.01.2018