Helm可选嵌套变量

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

如何在值文件中创建一个可选块,然后在模板中引用它?

例如,说我有一个类似于以下内容的值文件:

# values.yaml
foo:
   bar: "something"

然后我有一个看起来像这样的头盔模板:

{{ .Values.foo.bar }}

如果我想将值文件中的foo.bar设为可选,该怎么办?如果值中不存在foo键,则会引发错误。

我已经尝试添加if是否有条件。但是,如果缺少foo键,此操作仍将失败:

{{ if .Values.foo.bar }}
{{ .Values.foo.bar }}
{{ end }}

任何想法都值得赞赏。

kubernetes kubernetes-helm go-templates
1个回答
0
投票

大多数图表将默认将父对象设置为values.yaml中的一个空映射,因此它始终存在。

foo: {}

然后{{ if .Values.foo.bar }}起作用。

如果不可能,请同时测试两个键:

{{ if .Values.foo }}
{{ if .Values.foo.bar }}
{{ .Values.foo.bar }}
{{ end }}
{{ end }}

由于and评估所有参数,即使第一个为false,在这种情况下也无法使用and功能。

如果需要检查是否存在假值或空值,hasKey中还包含sprig函数:

{{ if hasKey .Values.foo "bar" }}
© www.soinside.com 2019 - 2024. All rights reserved.