Шаблонная труба и / или отрицательный патрубок 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)) }}