Helm 可以有多个 values.yaml 文件吗

问题描述 投票:0回答:3

我可以在一个 Helm chart 中有多个

values.yaml
文件吗?

mychart/templates/internalValues.yaml
,
mychart/templates/customSettings.yaml
, 等等?

访问

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

kubernetes kubernetes-helm
3个回答
125
投票

是的,Helm 可以有多个值文件。只需使用

--values
标志(或
-f
)。

例子:

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

您也可以使用

--set
传递单个值。

例子:

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

来自官方文档

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

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

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

如果两者都使用, --set values 将合并到具有更高优先级的 --values 中。用 --set 指定的覆盖将保留在配置映射中。可以使用 helm get values 查看给定版本的 --set 值。可以通过运行指定了 --reset-values 的 helm upgrade 来清除已经设置的值。


75
投票

默认情况下,Helm 只会使用图表根目录中的

values.yaml
文件。

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

helm install . -f values.production.yaml

您还可以通过将其他设置捆绑为一个文件并 让 Helm 读取捆绑文件 来获得类似的效果。 Helm 提供了一个 undocumented fromYaml template function 可以解析文件,所以原则上你可以做类似的事情

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

9
投票

只是更新:根据当前官方文档

--set
--values
不会合并

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

还有:

您可以多次指定 '--values'/'-f' 标志。优先级将给予指定的最后一个(最右边的)文件。

© www.soinside.com 2019 - 2024. All rights reserved.