我可以为Helm提供多个values.yaml文件

Jam*_*aac 20 kubernetes kubernetes-helm

我可以在Helm图表中有多个values.yaml文件吗?像mychart/templates/internalValues.yaml,mychart/templates/customSettings.yaml等?

访问values.yaml文件中的属性可以通过{{.Values.property1}}来完成.我如何引用这些自定义values.yaml文件中的属性?

Dav*_*aze 22

默认情况下,Helm仅使用values.yaml图表根目录中的文件.

您可以要求它在安装时加载其他值文件,例如,如果您的设置指向不同环境中的不同数据库:

helm install . -f values.production.yaml
Run Code Online (Sandbox Code Playgroud)

您还可以通过捆绑其他设置为文件,并获得了类似的效果,要求头盔读取捆绑文件.Helm提供了一个无法记录的fromYaml模板函数,它可以解析文件,因此原则上你可以做类似的事情

{{- $v := $.Files.Get "more-values.yaml" | fromYaml }}
foo: {{ $v.bar }}
Run Code Online (Sandbox Code Playgroud)

  • 具体来说,这对我有用:{{ - $ v:=(.Files.Get"internalvalues.yaml")| fromYaml}} (2认同)

Eth*_*der 16

是的,Helm可能有多个值文件。只需使用--values标志(或-f)。

例:

helm install ./path --values ./internalValues.yaml --values ./customSettings.yaml
Run Code Online (Sandbox Code Playgroud)

您也可以使用传入单个值--set

例:

helm install ./path --set username=ADMIN --set password=${PASSWORD}
Run Code Online (Sandbox Code Playgroud)

从官方文档中

有两种在安装过程中传递配置数据的方式:

--values(或-f):指定带有覆盖的YAML文件。可以多次指定,最右边的文件优先

--set(及其变体--set-string和--set-file):在命令行上指定替代。

如果两者都使用,则--set值将合并为优先级更高的--values。用--set指定的替代将保留在configmap中。对于给定的版本,可以使用helm get values查看已设置的值。可以通过在指定了--reset-values的情况下运行helm upgrade来清除--set的值。

  • 只是想注意,指定多个值文件不会合并这些文件中存在的值,这在此处讨论:[Helm 应该对多个值文件执行深度合并](https://github.com/helm/helm/issues/第3486章) (7认同)
  • @EthanStrider 现在还是这样吗?我刚刚尝试过,它确实合并了多个值文件中的所有值。我有values.yaml 和values-dev.yaml,最终结果包含两个文件中的所有变量,最后一个指定的文件覆盖第一个文件中的值。官方文档的简单示例 https://helm.sh/docs/chart_template_guide/values_files/ (3认同)

小智 5

只是为了更新:根据当前的官方文档 --set--values不会合并

要覆盖图表中的值,请使用“--values”标志并传入文件或使用“--set”标志并从命令行传递配置,以强制使用“--set-string”字符串值'。如果值很大,因此您不想使用“--values”或“--set”,请使用“--set-file”从文件中读取单个大值。

还 :

您可以多次指定 '--values'/'-f' 标志。将优先考虑指定的最后(最右侧)文件。