Есть ли способ включить пространство имен в значение? - PullRequest
2 голосов
/ 03 июля 2019

У меня есть несколько пространств имен (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 Ответ

1 голос
/ 03 июля 2019

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

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

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

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

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

...