Встроенные операторы TPL в шлем - PullRequest
0 голосов
/ 18 октября 2019

Я работаю со штурвалом.

У меня есть условие, где переменная в values.yaml (имя переменной - db) получит условное значение (либо oracle, либо postgres).

Inодинаковые values.yaml У меня есть два раздела, содержащие соответствующие свойства для oracle & postgres.

Как я могу использовать переменную в db во вложенном виде? Я хочу, чтобы избежать, если еще блоки.

Я пытался {{tpl .Values. {{Tpl .Values.db.}}. Port.}}. но это не работает.

Ниже приведен фрагмент кода

Values.yaml

db: postgres
postgres:
  port:5432
oracle:
  port:1521

templatefile.yaml

port: "{{tpl .Values.{{tpl .Values.db .}}.port .}}"

1 Ответ

2 голосов
/ 18 октября 2019

Вы не можете вкладывать блоки {{ ... }} в язык шаблонов Helm.

Вы можете установить переменную в значение внутреннего "шаблона" или просто вызвать его непосредственно как выражение

{{- $dbname := tpl .Values.db . -}}
{{- printf "%s" (tpl .Values.db .) -}}

Чтобы использовать это поле в структуре .Values, вам нужна функция text / template index.

{{- $settings := index .Values (tpl .Values.db .) -}}
port: "{{ $settings.port }}"
...