舵图中的嵌套默认值

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)。将图表设计为具有较浅的值树以简化此设置会很有帮助。