我被要求修改 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 -}}
我决定测试一下 madniel 在他的评论中写的内容。这是我的文件:
values.yaml
someString: abcdef
emptyString: ""
# nilString:
模板/test.yaml
{{ printf "someEmptyString=%q)" .Values.someString }}
{{ printf "emptyString=%q)" .Values.emptyString }}
{{ printf "nilString=%q)" .Values.nilString }}
{{- if .Values.someString }}
{{ printf "someString evaluates to true" }}
{{- end -}}
{{- if .Values.emptyString }}
{{ printf "emptyString evaluates to true" }}
{{- end -}}
{{- if .Values.nilString }}
{{ printf "nilString evaluates to true" }}
{{- end -}}
{{- if not .Values.emptyString }}
{{ printf "not emptyString evaluates to true" }}
{{- end -}}
{{- if not .Values.nilString }}
{{ printf "not nilString evaluates to true" }}
{{- end -}}
Helm 模板输出:
➜ helm template . --debug
install.go:173: [debug] Original chart version: ""
install.go:190: [debug] CHART PATH: <REDACTED>
---
# Source: asd/templates/test.yaml
someEmptyString="abcdef")
emptyString="")
nilString=%!q(<nil>))
someString evaluates to true
not emptyString evaluates to true
not nilString evaluates to true
所以是的,如果您使用
{{ if $var.alias }}
,它应该可以工作
我选择退出此检查并清空字符串:
{{- if eq .Values.MyemptyString "" }}
您还可以使用以下代码来检查非空字符串:
{{- if not (eq .Values.notEmptyString "") }}