Есть ли способ включить пространство имен в значение?

У меня есть несколько пространств имен (iso, dev, sandbox и т. Д.), Которые соответствуют моим различным средам. Для каждого окружения и, следовательно, пространства имен, есть связанный БД. Когда я развертываю свой модуль с помощью Helm, я хотел бы внедрить пространство имен в значение, чтобы получить соответствующий пароль.

В моем файле значений у меня есть что-то похожее на это:

db:
  iso: passwordISO
  dev: passwordDEV
  sandbox: passwordSANDBOX
  spec: passwordSPEC
  val: passwordVAL

и в моем файле consumer_config у меня есть это:

  db_host: DB_HOST-{{ .Release.Namespace }}
  db_port: DB_PORT
  db_name: DB_NAME
  db_user: DB_PORT
  db_password: {{ .Values.db.iso }}

Я уже пытался использовать {{- include }} шаблон, но безуспешно. Я тоже пробовал {{ .Values.db.{{ .Release.Namespace }}}} давая мне следующую ошибку unexpected <.> in operand

Любое понимание того, как сделать это или любой обходной путь?

1 ответ

Поскольку Helm основан на языке Go-template, могут помочь функции, доступные на языке Go-template:

{{ index .Values.db .Release.Namespace }}

Из документов (go-template docs):

index Возвращает результат индексации своего первого аргумента следующими аргументами. Таким образом, "index x 1 2 3" в синтаксисе Go - x[1][2][3]. Каждый индексированный элемент должен быть картой, срезом или массивом.

так что в этом случае вы индекс .Values.db с ключом .Release.Namespace

Другие вопросы по тегам