在不同部署环境的单个存储库中创建 Helm Charts 的最佳方法是什么?

What is the best way of creating Helm Charts in a single repository for different deployment environments?

我们正在使用 Helm Charts 在 Kubernetes 集群上的多个环境中部署服务。现在对于每个环境都有一个变量列表,如数据库 url、docker 图像标签等。在这种情况下,定义 Helm 相关 values.yaml 的最明显和正确的方法是什么除了上面提到的一些参数外,Helm 模板文件在所有环境中都保持不变。

一种方法是使用多个值文件,helm 现在允许这样做。假设您有以下值文件:

values1.yaml:

image:
  repository: myimage
  tag: 1.3

values2.yaml

image:
  pullPolicy: Always

这些都可以在 helm 的命令行上使用:

$ helm install -f values1.yaml,values2.yaml <mychart>

在这种情况下,这些值将合并到

image:
  repository: myimage
  tag: 1.3
  pullPolicy: Always

您可以通过为 "helm install" 命令提供“--dry-运行 --debug”选项来查看将使用的值。

顺序很重要。如果两个文件中出现相同的值,则 values2.yaml 中的值将优先,因为它是最后指定的。每个图表还附带一个值文件。这些值将用于您自己的值文件中未指定的任何内容,就像它在您提供的值文件列表中的第一个一样。

在您的情况下,您可以在 values1.yaml 中指定所有常用设置,并根据需要使用 values2.yaml 覆盖它们。