Я прошел несколько итераций того, как обрабатывать установку чувствительных переменных среды. Что-то вроде следующего - самое простое решение, которое я до сих пор придумал:
шаблон:
{{- 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 }}
Минусы:
Это работает только для секретных ключей, которые точно соответствуют имени переменной среды, но кажетсякак это типичный случай использования.