我为我的头盔图做了一个设计,它使用模板来设置我的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
在包含模板时,有没有办法在模板名称中使用变量?
答案 0 :(得分:2)
我正在使用头盔2.4.2。这项工作通过改变行
{{ - include {{.Values.resources.cloudProvider}}。}}
为:
{{ - include .Values.resources.cloudProvider。}}
您还可以使用变量:
{{ - $ provider:= .Values.resources.cloudProvider - }}
{{ - 包括$ provider。 }}