包含多个值文件中的多个列表的舵图 [英] Helm Charts with multiple lists in multiple values files
本文介绍了包含多个值文件中的多个列表的舵图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个values.yaml,它具有以下内容:
abc:
env:
- name: name01
value: value01
- name: name02
value: value02
我有另一个值文件Values-dev.yaml,它是我在安装时使用-f添加的,它具有:
abc:
env:
- name: name03
value: value03
并使用Range在我的模板中列出它们。我希望在应用这两个文件后,列表会变成这样:
abc:
env:
- name: name01
value: value01
- name: name02
value: value02
- name: name03
value: value03
但是Values-dev.yaml值将覆盖values.yaml中的值,它将变为:
abc:
env:
- name: name03
value: value03
如何实现不同值文件中具有相同字段名的这两个列表的合并?
推荐答案
简短的答案是,您不能合并lists
。
在您的示例中abc.env
是key
,value
是一个列表。让我用等价的符号重写您的第一个值文件,它会更清楚:
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 }}
这篇关于包含多个值文件中的多个列表的舵图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文