Несколько переменных Env в диаграммах шлема - PullRequest
0 голосов
/ 30 октября 2019

Я создал общие схемы руля. В файле values.yml есть набор переменных env, которые необходимо установить как часть файла deploy.yaml.

Фрагмент файла значений.

env:
  name: ABC
  value: 123
  name: XYZ
  value: 567
  name:  PQRS
  value: 345

В deploy.yaml, когда указываются значения, указывается только фамилия / значение, другие значения перезаписываются. Как прочитать / установить все имена / значения в файле развертывания?

Ответы [ 2 ]

0 голосов
/ 31 октября 2019

Я прошел несколько итераций того, как обрабатывать установку чувствительных переменных среды. Что-то вроде следующего - самое простое решение, которое я до сих пор придумал:

шаблон:

{{- if or $.Values.env $.Values.envSecrets }}
env:
  {{- range $key, $value := $.Values.env }}
  - name: {{ $key }}
    value: {{ $value | quote }}
  {{- end }}
  {{- range $key, $secret := $.Values.envSecrets }}
  - name: {{ $key }}
    valueFrom:
      secretKeyRef:
        name: {{ $secret }}
        key: {{ $key | quote }}
  {{- end }}
{{- end }}

значения:

env:
  ENV_VAR: value
envSecrets:
  SECRET_VAR: k8s-secret-name

Плюсы:

Синтаксис

довольно прост

ключи легко объединяются. Это пригодилось при создании CronJobs с общими секретами. Мне удалось легко переопределить «глобальные» значения, используя следующее:

  {{- range $key, $secret := merge (default dict .envSecrets) $.Values.globalEnvSecrets }}

Минусы:

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

0 голосов
/ 30 октября 2019

Вот как я решил эту проблему на общей разработанной ранее карте руля:

          env:
            {{- if .Values.env }}
            {{- toYaml .Values.env | indent 12 }}
            {{- end }}

В values.yaml:

env:
- name: ENV_VAR
  value: value
# or
- name: ENV_VAR
  valueFrom:
    secretKeyRef:
      name: secret_name
      key: secret_key

Здесь важно отметить следующее:отступ. Неправильный отступ может привести к правильной helm-диаграмме (файл yaml), но API kubernetes выдаст ошибку.

...