如何在Helm中传递空字符串



我有一个RBAC的图表。

一个模板是

...
rules:
{{- range $rule := .Values.rules }}
- apiGroups: {{ .apiGroupts }}
resources: {{ .resources }}
verbs: {{ .verbs }}
{{- end }}

In my values

rules:
- apiGroups: [""]
...

渲染结果为

- apiGroups: []

问题是helm忽略空字符串作为值。它会导致资源角色出现问题,因为"表示核心组。

rules[0].apiGroups: Required value: resource rules must supply at least one api group

我尝试了以下方法。但是它不能识别语法

- apiGroups: {{ .apiGroups | default [""] }}

不回答这个确切的用例,而是回答标题中的问题,这就是我如何得到这个问题的。答案是使用hasKey模板函数。if的问题是它将空字符串或""视为nil

给定:

values.yaml

string: foo
emptyString: ""

模板/test.yaml

{{- with .Values}}
{{- if .string }}
{{ printf "if string=%q" .string }}
{{- end }}
{{- if .emptyString }}
{{ printf "if emptyString=%q" .emptyString }}
{{- end }}
{{- if hasKey . "string" }}
{{ printf "haskey string=%q" .string }}
{{- end }}
{{- if hasKey . "emptyString" }}
{{ printf "haskey emptyString=%q" .emptyString }}
{{- end }}
{{- end }}

将返回:

if string="foo"
haskey string="foo"
haskey emptyString=""

也许可以尝试使用quote添加管道以允许空字符串

- apiGroups: {{ .apiGroups | quote }}

https://helm.sh/docs/howto/charts_tips_and_tricks/quote-strings-dont-quote-integers

相关内容

  • 没有找到相关文章

最新更新