我有一个包含以下内容的values.yaml:
abc:
env:
- name: name01
value: value01
- name: name02
value: value02
我有另一个值文件values-dev.yaml,我在使用-f安装时添加它,它有:
abc:
env:
- name: name03
value: value03
并使用范围将它们列在我的模板中。我希望应用这两个文件后列表会变成这样:
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
is the 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 }}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)