且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

包含多个值文件中的多个列表的舵图

更新时间:2023-10-25 17:39:40

简短的答案是,您不能合并lists

在您的示例中abc.envkeyvalue是一个列表。让我用等价的符号重写您的第一个值文件,它会更清楚:

abc:
  env: [{name: name01, value: value01}, {name: name02, value: value02}]

因此Helm正在执行预期的操作,用最后提供的键覆盖abc.env键。

解决方案是重新组织您的值文件,如下所示:

abc:
  env:
    name01: value01
    name02: value02
通过这种方式,您可以根据需要合并和覆盖您的值文件。这样,用命令行标志覆盖单个值也容易得多,例如:
--set abc.env.name01=different

使用一些Helm魔法,很容易将这些值作为环境变量传递给您的Pod:

...
  containers:
  - name: abc
    image: abc
    env:
    {{- range $key, $value := .Values.abc.env }}
    - name: {{ $key }}
      value: {{ $value | quote }}
    {{- end }}