头盔小枝模板管和/或协商

问题描述

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

 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)) }}

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...