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

use*_*421 1 kubernetes kubernetes-helm

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

ksc*_*der 5

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

values1.yaml:

image:
  repository: myimage
  tag: 1.3
Run Code Online (Sandbox Code Playgroud)

values2.yaml

image:
  pullPolicy: Always
Run Code Online (Sandbox Code Playgroud)

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

$ helm install -f values1.yaml,values2.yaml <mychart>
Run Code Online (Sandbox Code Playgroud)

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

image:
  repository: myimage
  tag: 1.3
  pullPolicy: Always
Run Code Online (Sandbox Code Playgroud)

您可以通过向"helm install"命令提供"--dry-run --debug"选项来查看将使用的值.

订单很重要.如果两个文件中都出现相同的值,则来自values2.yaml的值将采用先验,因为它是最后指定的.每个图表还附带一个值文件.这些值将用于您自己的值文件中未指定的任何值,就好像它是您提供的值文件列表中的第一个.

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