5

我为我的 helm chart 做了一个设计,它使用模板来设置我的 kubernetes 部署的某些部分。这些模板是每个云提供商的:

GCE的模板,AWS的模板等。

然后将该模板包含在 Helm 中图表的部署部分中。

现在有一个很好的方法是:根据它所针对的云提供商命名每个模板,并使用 values.yaml 中的变量来指导它。

一堆 if 语句还有一个不那么漂亮的方法。

我想使用漂亮的方式,因为它需要更少的维护和下游代码,但无法使以下工作:

{{- include {{.Values.resources.cloudProvider}} .}}

在此声明中{{.Values.resources.cloudProvider}}包含我的云提供商名称(aws、gce 等)

我得到的错误是:

Error: parse error in "testModel/templates/deployment.yaml": 
template: testModel/templates/deployment.yaml:28: 
unexpected "{" in operand

我测试的另一种方法是:

{{- include (.Values.resources.cloudProvider) .}}

这使:

Error: render error in "testModel/templates/deployment.yaml": template:
testModel/templates/deployment.yaml:29:23: 
executing "testModel/templates/deployment.yaml" 
at <.Values.resources.c...>: invalid value; expected string

包含模板时,是否可以使用变量作为模板名称?

4

1 回答 1

10

我正在使用掌舵 2.4.2。这项工作通过改变线路

{{- 包括 {{.Values.resources.cloudProvider}} .}}

到:

{{- 包括 .Values.resources.cloudProvider .}}

您还可以使用变量:

{{- $provider := .Values.resources.cloudProvider -}}
{{ - 包括 $provider 。}}

于 2017-06-12T18:47:34.947 回答