使用helm中的变量包含(或模板)名称

时间:2017-05-10 22:20:44

标签: kubernetes-helm

我为我的头盔图做了一个设计,它使用模板来设置我的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

在包含模板时,有没有办法在模板名称中使用变量?

1 个答案:

答案 0 :(得分:2)

我正在使用头盔2.4.2。这项工作通过改变行

  

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

为:

  

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

您还可以使用变量:

  

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