Avi*_*Avi 13 kubernetes kubernetes-helm
我被要求修改 Helm 模板以适应一些更改,以检查值是否为空,如下面的代码片段所示。我需要检查代码片段$var.alias内部printf并编写自定义逻辑来打印自定义值。任何相同的指针都会很棒。
{{- range $key, $value := .Values.testsConfig.keyVaults -}}
{{- range $secret, $var := $value.secrets -}}
{{- if nil $var.alias}}
{{- end -}}
{{ $args = append $args (printf "%s=/mnt/secrets/%s/%s" $var.alias $key $var.name | quote) }}
{{- end -}}
{{- end -}}
Run Code Online (Sandbox Code Playgroud)
Mat*_*att 40
我决定测试一下 Madniel 在他的评论中写的内容。这是我的文件:
\n值.yaml
\nsomeString: abcdef\nemptyString: ""\n# nilString:\nRun Code Online (Sandbox Code Playgroud)\n模板/test.yaml
\n{{ printf "someEmptyString=%q)" .Values.someString }}\n{{ printf "emptyString=%q)" .Values.emptyString }}\n{{ printf "nilString=%q)" .Values.nilString }}\n\n{{- if .Values.someString }}\n{{ printf "someString evaluates to true" }}\n{{- end -}}\n\n{{- if .Values.emptyString }}\n{{ printf "emptyString evaluates to true" }}\n{{- end -}}\n\n{{- if .Values.nilString }}\n{{ printf "nilString evaluates to true" }}\n{{- end -}}\n\n{{- if not .Values.emptyString }}\n{{ printf "not emptyString evaluates to true" }}\n{{- end -}}\n\n{{- if not .Values.nilString }}\n{{ printf "not nilString evaluates to true" }}\n{{- end -}}\nRun Code Online (Sandbox Code Playgroud)\n头盔模板输出:
\n\xe2\x9e\x9c helm template . --debug\ninstall.go:173: [debug] Original chart version: ""\ninstall.go:190: [debug] CHART PATH: <REDACTED>\n\n---\n# Source: asd/templates/test.yaml\nsomeEmptyString="abcdef")\nemptyString="")\nnilString=%!q(<nil>))\nsomeString evaluates to true\nnot emptyString evaluates to true\nnot nilString evaluates to true\nRun Code Online (Sandbox Code Playgroud)\n所以是的,如果你使用它应该可以工作{{ if $var.alias }}
MyKeykey 是否存在并且具有非空值,即不是0, false, "",之一null:{{- if .Values.MyKey }}
Run Code Online (Sandbox Code Playgroud)
MyKeykey 是否存在且其值不为 null:{{ if not (quote .Values.emptyString | empty) }}
Run Code Online (Sandbox Code Playgroud)
MyKey密钥是否存在:{{- if hasKey .Values "MyKey" }}
Run Code Online (Sandbox Code Playgroud)
例如
MyKey: 5
Run Code Online (Sandbox Code Playgroud)
对于 1 返回 true,对于 2 返回 true,对于 3 返回 true
MyKey: false
Run Code Online (Sandbox Code Playgroud)
1 为 false,2 为 true,3 为 true
MyKey:
Run Code Online (Sandbox Code Playgroud)
1 为 false,2 为 false,3 为 true
DifferentKey:
Run Code Online (Sandbox Code Playgroud)
1 为 false,2 为 false,3 为 false
相同的结果也适用于地图和列表。
答案受到以下 StackOverflow 答案的启发:/sf/answers/5231296591/
| 归档时间: |
|
| 查看次数: |
64756 次 |
| 最近记录: |