如何解决头盔小枝模板管和/或协商
我正在尝试使用以下代码在掌舵中创建配置映射:
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") }},
解决方法
在Go 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)) }}