包含多个值文件中的多个列表的舵图 [英] Helm Charts with multiple lists in multiple values files

查看:18
本文介绍了包含多个值文件中的多个列表的舵图的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

这篇关于包含多个值文件中的多个列表的舵图的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆