Вы можете изменить структуру так, чтобы иметь один параметр этого пароля, а затем ввести его в нескольких местах.Файл Helm values.yaml
может содержать
databasePassword: default123
, а затем отдельные файлы YAML развертываний могут включать
env:
- name: DB_PASSWORD
value: {{ .Values.databasePassword | quote }}
Для конкретной логики, о которой вы спрашиваете, важно то, что{{ define }}
всегда должен быть на верхнем уровне (вы не можете условно определить шаблон);Кроме того, шаблоны и настройки значений находятся в разных пространствах имен (вы не можете использовать define
для изменения значения .Values
).Вы можете написать шаблон, который всегда генерирует определенное значение пароля, выбирая для него источник:
{{- define "users.env.DB_PASSWORD" -}}
{{- if ne .Values.db.env.POSTGRES_PASSWORD "default123" -}}
{{- .Values.db.env.POSTGRES_PASSWORD -}}
{{- else -}}
{{- .Values.users.env.DB_PASSWORD -}}
{{- end -}}
и вызывая его в шаблоне развертывания:
env:
- name: DB_PASSWORD
value: {{ include "users.env.DB_PASSWORD" . | quote }}
Здесь важно отметитьdefault
принимает два параметра;вызов db.env.POSTGRES_PASSWORD
, как вы показали, вызовет ошибку, потому что он не знает, к какому значению применить это значение по умолчанию.