Назначьте одно и то же значение штурвала более чем одной цели - PullRequest
0 голосов
/ 11 марта 2019

Я работаю над диаграммой Хелма, которая должна раскручивать базу данных, а также клиента, который использует базу данных. Чтобы избежать избыточности, я хочу предоставить только одно значение (имя пользователя, пароль), которое должно быть назначено клиенту и БД. И только если это не значение по умолчанию, все остальные значения должны быть переопределены.

Итак, когда я создаю диаграмму и передаю другое значение в db.env.POSTGRES_PASSWORD, оно также должно переопределить users.env.DB_PASSWORD

helm install --debug --dry-run --set db.env.POSTGRES_PASSWORD=test

Вот небольшой отрывок из моего values.yml

db:
  env:
    POSTGRES_PASSWORD: "default123"

users:
  env:
    DB_PASSWORD: "default123"

Я думаю, мне нужно как-то сделать это в файле _helpers.tpl. Как то так, но не работает.

{{- define "db.env.POSTGRES_PASSWORD" -}}
{{- default "password123" -}}
{{- end -}}

{{- if ne db.env.POSTGRES_PASSWORD "default123" }} # => This line causes the error
{{- define "users.env.DB_PASSWORD" -}}
{{- default .Values.db.env.POSTGRES_PASSWORD -}}
{{- end -}}
{{- end }}

ОШИБКА:

unexpected <define> in command

Пожалуйста, укажите мне правильное направление, спасибо

1 Ответ

0 голосов
/ 13 марта 2019

Вы можете изменить структуру так, чтобы иметь один параметр этого пароля, а затем ввести его в нескольких местах.Файл 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, как вы показали, вызовет ошибку, потому что он не знает, к какому значению применить это значение по умолчанию.

...