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

时间:2018-06-29 08:35:41

标签: kubernetes kubernetes-helm

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

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

3 个答案:

答案 0 :(得分:12)

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

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

helm install . -f values.production.yaml

您还可以通过将其他设置捆绑为文件和asking Helm to read the bundled file来获得类似的效果。 Helm提供了一个undocumented fromYaml template function可以解析文件,因此原则上您可以执行类似的操作

{{- $v := $Files.get "more-values.yaml" | fromYaml }}
foo: {{ $v.bar }}

答案 1 :(得分:4)

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

示例:

helm install ./path --values ./internalValues.yaml --values ./customSettings.yaml

您还可以使用 --set 传递单个值。

示例:

helm install ./path --set username=ADMIN --set password=${PASSWORD}

From the official documentation

  

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

     

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

     

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

     

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

答案 2 :(得分:2)

只是为了更新:按照目前的official documentation --set & --values 不会合并

<块引用>

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

还有:

<块引用>

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