go - Helm sprig 模板管道和/或否定
问题描述
我正在尝试使用以下代码在 helm 中创建我的配置映射:
api: "{{ .Values.global.api }}",
demo: {{ .Values.global.api | contains "demo" }},
other: ....,
other
如果 Values.global.api 不包含“demo”和“prod”,我想设置为 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)) }}
推荐阅读
- angular - 使用自定义 webpack 配置在 Angular 构建中将内联图像作为 base64
- python - 尝试对 FrozenLake Openai 游戏使用 DQN 算法时出错
- c - 无法在 Windows 10 上从命令提示符运行 C 程序
- xml - Azure B2C:在哪里创建要在自定义策略门户或自定义策略或两者中使用的日期时间扩展属性?
- angular - CdkDropList 输入已弃用 CdkDropList 中不存在
- mysql - MySQL JSON_SEARCH 用于嵌套对象的多个参数
- delphi - Delphi OpenSSL 加密/解密
- ios - 在swift中使用键盘IQKeyboardManagerSwift点击完成按钮时如何获取放置在tableview中的文本字段的索引路径
- python - 制作无分支柜台的最佳方法是什么?
- android - 如何在 Android 模块中访问 getResources?