我是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
答案 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 -f
或 helm upgrade -f
在 helm install
或 helm upgrade
上提供的值文件--set
或 --set-string
标志的值概括而言,您可能需要考虑以下两种方法:
如果您的环境之间存在重大差异,则可以选择传递不同的 values.yaml
文件,并且值得进行额外维护。
另一方面,如果差异仅与少数字段有关 - 考虑仅使用一个具有默认值的基本 values.yaml
文件,并仅覆盖带有 --set
标志的特定字段。
(*) 在您的特定情况下,您将 DEV/PROD 配置划分为不同的文件,这是一个很好的做法,但在某些情况下,差异可能仅存在于一两个 url(可能还有一些您会知道的秘密)无论如何都想作为内联值传递)。这样您就可以节省额外的维护费用。