舵图中的嵌套默认值
Nested default value in a helm chart
我在 helm 图表中有以下集团:
value: {{.Values.service.container.SubBloc.myKey | default "mydefault" }}
如果在我的值文件中我定义了一个 SubBloc 而不是我的“mykey”,则默认情况下效果很好,如下所示:
service:
container:
SubBloc:
Key2: Value2
resources:
...
但是,如果我根本没有定义 SubBloc,就像这里:
service:
container:
resources:
...
然后 helm chart 不可解析。
有没有办法解析“默认嵌套值”?
在代码级别,如果 a
是字典(即使它不包含 b
),则字段查找 a.b
有效,但如果 [=12] =] 为零。我发现这里有用的一种技术是设置一个应该包含父字典的变量,但在父字典上使用 default
以确保它永远不会为零:
{{- $subBloc := .Values.service.container.SubBloc | default dict }}
value: {{ $subBloc.myKey | default "mydefault" }}
如果上层也可能不存在,则您需要对值树的每一层重复此技术。通常可以安全地假设图表 values.yaml
中的任何内容都存在(尽管可以明确地将其覆盖为 nil)。将图表设计为具有较浅的值树以简化此设置会很有帮助。
我在 helm 图表中有以下集团:
value: {{.Values.service.container.SubBloc.myKey | default "mydefault" }}
如果在我的值文件中我定义了一个 SubBloc 而不是我的“mykey”,则默认情况下效果很好,如下所示:
service:
container:
SubBloc:
Key2: Value2
resources:
...
但是,如果我根本没有定义 SubBloc,就像这里:
service:
container:
resources:
...
然后 helm chart 不可解析。
有没有办法解析“默认嵌套值”?
在代码级别,如果 a
是字典(即使它不包含 b
),则字段查找 a.b
有效,但如果 [=12] =] 为零。我发现这里有用的一种技术是设置一个应该包含父字典的变量,但在父字典上使用 default
以确保它永远不会为零:
{{- $subBloc := .Values.service.container.SubBloc | default dict }}
value: {{ $subBloc.myKey | default "mydefault" }}
如果上层也可能不存在,则您需要对值树的每一层重复此技术。通常可以安全地假设图表 values.yaml
中的任何内容都存在(尽管可以明确地将其覆盖为 nil)。将图表设计为具有较浅的值树以简化此设置会很有帮助。