Helm: Поддержка сложных объектов в наборах

Созданный на 3 мар. 2017  ·  3Комментарии  ·  Источник: helm/helm

В чате я спросил о возможности определить такой объект с помощью --set и с грустью узнал правду:

env:
  - name: ROUTER
    value: cake
  - name: PASSWORD
    value: derp

Мне нравится использовать такие строфы в моем values.yaml для определения всех потребностей переменной env для конкретной спецификации контейнера, так что в спецификации мне нужно только:

        env:
{{ toYaml .Values.env | indent 10 }}

Это полезно по множеству причин:

  1. Мне не нужно беспокоиться о передаче пустых переменных в мое приложение.
  2. Все переменные определены в одном месте, поэтому, если имя переменной изменится, я могу быстро установить и продолжить свой путь.
  3. Мне никогда не нужно беспокоиться о полном повторном развертывании чего-то вроде объекта deployment только потому, что я хочу передать несколько других переменных в основной процесс.

К сожалению, передача этих типов объектов в настоящее время не поддерживается. На данный момент лучше всего использовать операторы if прямо в моих шаблонах, но было бы здорово определить большие фрагменты потенциально динамической информации о моем приложении прямо в values.yaml

Самый полезный комментарий

Теперь это возможно с использованием следующего синтаксиса:

helm install foo --set env[0].name="ROUTER",env[0].value="cake"

Это задокументировано здесь .

Все 3 Комментарий

На самом деле я просто нашел другой способ сделать это, наблюдая за kube-lego :

          {{- range $key, $value := .Values.config }}
            - name: "{{ $key }}"
              value: "{{ $value }}"
          {{- end }}

Моя проблема похожа.
Мы хотим использовать Chart aws-cluster-autoscaler по адресу:
https://github.com/kubernetes/charts/tree/master/stable/aws-cluster-autoscaler

Мы хотели бы передать имя autoscalingGroups []. Через командную строку, используя --set , а другую информацию - через файл params.yaml:

autoscalingGroups:
- minSize: 2
  maxSize: 8
awsRegion: eu-west-1

Когда мы пытаемся установить имя группы автомасштабирования с помощью:

$ helm upgrade cluster-autoscaler stable/aws-cluster-autoscaler -f params.yaml --set "autoscalingGroups[].name"="nodes.k8s.test.eu-west-1.aws.redacted.net"

Но это не работает.

Читая документацию , это известно, но было бы неплохо иметь возможность это сделать.

Теперь это возможно с использованием следующего синтаксиса:

helm install foo --set env[0].name="ROUTER",env[0].value="cake"

Это задокументировано здесь .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги