Шаблонная труба и / или отрицательный патрубок Helm.

Я пытаюсь создать свою конфигурационную карту в Helm, используя следующий код:

 api: "{{ .Values.global.api }}",
 demo: {{ .Values.global.api | contains "demo" }},
 other: ....,

Я бы хотел установить otherкак истина, если Values.global.api НЕ содержит "demo" и "prod". Что-то типа

other: {{ .Values.global.api | NOT (contains "demo" AND contains "prod") }},

1 ответ

Решение

На ходу text/template язык, конвейеры и вызовы функций эквивалентны, и вы можете свободно заменять их в любом направлении

{{ x | f a b }}
{{ f a b (x) }}

Вы не можете распределить параметр между несколькими функциями, как вы предлагаете здесь; вам нужно повторить его (или поместить в локальную переменную). Просматривая каталог функций Sprig, я не уверен, что есть какая-то конкретная функция, которая соответствует вашим потребностям, которая упростила бы это. Вы должны объяснить это:

demo: {{ not (and (contains "demo" .Values.global.api) (contains "prod" .Values.global.api)) }}

Как я предложил в скобках, вы можете использовать локальную переменную, чтобы немного сократить это:

{{- $api := .Values.global.api }}
api: {{ quote $api }}
demo: {{ not (and (contains "demo" $api) (contains "prod" $api)) }}
Другие вопросы по тегам