`default (dict) .Values.outer.inner` 在 helm 模板中的语法是什么意思?
What does the syntax `default (dict) .Values.outer.inner` mean in a helm template?
给定 values.yaml
:
outer:
inner:
someKey: false
helm 模板文件中的以下语法是什么意思?
{{- if index (default (dict) .Values.outer.inner) "someKey" }}
{{- .... }}
{{- end }}
根据上下文,我可以推断出我认为它应该做什么:检查指定的键是否存在于指定的位置。
但是 default (dict)...
语法从何而来?小枝?我在这些地方都找不到它的记录:
https://v2.helm.sh/docs/chart_template_guide/#template-functions-and-pipelines
https://golang.org/pkg/text/template/#hdr-Functions
http://masterminds.github.io/sprig/
http://masterminds.github.io/sprig/defaults.html
它到底是什么意思?
如果值 outer: {...}
中不包含 inner
键,此特定代码可避免失败。
dict
是创建新词典的 Sprig function。可以使用任意(偶数)个参数调用它; (dict)
没有参数会创建一个空字典。
default x y
与 y | default x
相同并调用 Sprig default
function.
它试图防止的重要事情是 .Values.outer
中没有 inner
密钥。如果发生这种情况,.Values.outer.inner
将是 nil
,而 .Values.outer.inner.someKey
将产生错误; default dict
块将 nil
替换为一个空字典,它可以与 index
和类似的模板代码一起使用。
我经常一次一层地编写类似的模板块:
{{- $outer := .Values.outer | default dict -}}
{{- $inner := $outer.inner | default dict -}}
{{- if $inner.someKey }}
...
{{- end }}
给定 values.yaml
:
outer:
inner:
someKey: false
helm 模板文件中的以下语法是什么意思?
{{- if index (default (dict) .Values.outer.inner) "someKey" }}
{{- .... }}
{{- end }}
根据上下文,我可以推断出我认为它应该做什么:检查指定的键是否存在于指定的位置。
但是 default (dict)...
语法从何而来?小枝?我在这些地方都找不到它的记录:
https://v2.helm.sh/docs/chart_template_guide/#template-functions-and-pipelines
https://golang.org/pkg/text/template/#hdr-Functions
http://masterminds.github.io/sprig/
http://masterminds.github.io/sprig/defaults.html
它到底是什么意思?
如果值 outer: {...}
中不包含 inner
键,此特定代码可避免失败。
dict
是创建新词典的 Sprig function。可以使用任意(偶数)个参数调用它; (dict)
没有参数会创建一个空字典。
default x y
与 y | default x
相同并调用 Sprig default
function.
它试图防止的重要事情是 .Values.outer
中没有 inner
密钥。如果发生这种情况,.Values.outer.inner
将是 nil
,而 .Values.outer.inner.someKey
将产生错误; default dict
块将 nil
替换为一个空字典,它可以与 index
和类似的模板代码一起使用。
我经常一次一层地编写类似的模板块:
{{- $outer := .Values.outer | default dict -}}
{{- $inner := $outer.inner | default dict -}}
{{- if $inner.someKey }}
...
{{- end }}