头盔小枝模板管 and/or 否定

Helm sprig template pipe and/or negatate

我正在尝试使用以下代码在 helm 中创建我的配置映射:

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

如果 Values.global.api 不包含“demo”和“prod”,我想将 other 设置为 true。 像

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

在Gotext/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)) }}