将值传递给多个环境的模板

时间:2020-01-13 09:59:32

标签: kubernetes kubernetes-helm

我是Helm的新手,正在努力配置Deployment.yaml.Mychart树结构如下所示。但是我应该如何将dev和prod的值传递给Deployment.yaml?

例如,如果我想为产品使用不同的副本,是否应该添加其他值(例如below或deployment.yaml),使其始终保持原样,并使用mutlipe values.yaml,如下所示。

 replicas: {{ .Values.replicaCount .values.dev.replicacount }}

或者仅使用下面的标记就足够了。假设git分支等于master,然后使用下面的命令

helm install . -f values.production.yaml

如果git分支等于开发,则使用以下命令

 helm install . -f values.dev.yaml


+-- charts
|   \-- my-chart
|       +-- Chart.yaml        # Helm chart metadata
|       +-- templates
|       |   \-- ...
|       +-- values.yaml       # default values
|       +-- values.dev.yaml   # development override values
|       +-- values.prod.yaml  # production override values

2 个答案:

答案 0 :(得分:2)

每个环境中应该有一个values.yaml文件。

这意味着您将在templates/deployment.yaml中拥有

 replicas: {{ .Values.replicaCount }}

然后,对于每个环境,您将有一个特定的values.yaml。喜欢:

+-- values.yaml       # default values
+-- values.dev.yaml   # development override values
+-- values.prod.yaml  # production override values

答案 1 :(得分:0)

这实际上取决于您的环境之间的差异。

helm docs中所述:

<块引用>

价值的三个潜在来源:

  • 图表的 values.yaml 文件
  • helm install -fhelm upgrade -fhelm installhelm upgrade 上提供的值文件
  • 传递给 --set--set-string 标志的值

概括而言,您可能需要考虑以下两种方法:

  1. 如果您的环境之间存在重大差异,则可以选择传递不同的 values.yaml 文件,并且值得进行额外维护。

  2. 另一方面,如果差异仅与少数字段有关 - 考虑仅使用一个具有默认值的基本 values.yaml 文件,并仅覆盖带有 --set 标志的特定字段。


(*) 在您的特定情况下,您将 DEV/PROD 配置划分为不同的文件,这是一个很好的做法,但在某些情况下,差异可能仅存在于一两个 url(可能还有一些您会知道的秘密)无论如何都想作为内联值传递)。这样您就可以节省额外的维护费用。