helm 模板检查空字符串

问题描述 投票:0回答:2

我被要求修改 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 -}}
kubernetes kubernetes-helm
2个回答
31
投票

我决定测试一下 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 }}

,它应该可以工作

0
投票

我选择退出此检查并清空字符串:

{{- if eq .Values.MyemptyString "" }}

您还可以使用以下代码来检查非空字符串:

{{- if not (eq .Values.notEmptyString "") }}
© www.soinside.com 2019 - 2024. All rights reserved.