【问题标题】:Using a variable in helm include (or template) for the name在 helm 包含(或模板)中使用变量作为名称
【发布时间】:2017-10-09 18:12:27
【问题描述】:

我为我的 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

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

【问题讨论】:

  • {{ 从不直接进入自身。任何类似的转义序列都是如此,例如 jinja {%,甚至 php。

标签: kubernetes-helm


【解决方案1】:

我正在使用 helm 2.4.2。这项工作是通过改变线路来实现的

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

到:

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

你也可以使用变量:

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

【讨论】:

    猜你喜欢
    • 2013-04-05
    • 2020-05-16
    • 1970-01-01
    • 2015-05-04
    • 2019-09-21
    • 1970-01-01
    • 2022-11-15
    相关资源
    最近更新 更多