给出values.yaml
:
outer:
inner:
someKey: false
头盔模板文件中的以下语法是什么意思?
{{- 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。
这是要防止的重要事情是default
中没有.Values.outer
键。如果发生这种情况,则inner
为.Values.outer.inner
,并且nil
会产生错误; .Values.outer.inner.someKey
块用空字典替换default dict
,该字典可以与nil
和类似的模板代码一起使用。
我经常会一次写一层相似的模板块:
index