掌舵模板中的default(dict).Values.outer.inner语法是什么意思?

时间:2020-05-21 12:46:18

标签: templates kubernetes-helm sprig-template-functions

给出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

这实际上是什么意思?

1 个答案:

答案 0 :(得分:2)

如果值outer: {...}中没有包含inner键,则此特定代码可避免失败。

dict是创建新词典的Sprig function。可以使用任意(偶数)个参数来调用它。没有参数的(dict)将创建一个空字典。

default x yy | 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 }}