gpt4 book ai didi

kubernetes - 在多个值文件中具有多个列表的 Helm Charts

转载 作者:行者123 更新时间:2023-12-02 11:30:35 24 4
gpt4 key购买 nike

我有一个 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

如何实现将这 2 个列表与来自不同值文件的相同字段名称合并?

最佳答案

简短的回答是,您不能合并 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 }}

关于kubernetes - 在多个值文件中具有多个列表的 Helm Charts,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59394422/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com