Helm如何在values.yaml中使用变量

188次阅读
没有评论

问题描述

在使用Helm时,想要在values.yaml中使用变量,并在values.yaml中引用这些变量。然而,尝试更改values.yaml并创建ConfigMap名称的模板时,遇到了错误。

解决方案

请注意以下操作注意版本差异及修改前做好备份。

方案1

在Helm中,values.yaml文件中只能存储值,不支持模板语法。但是,你可以在templates文件夹中的模板文件中使用values.yaml中的值。
以下是如何在values.yaml中使用变量并在values.yaml中引用的步骤:
1. 在values.yaml文件中定义变量,例如myConfigMapName
2. 在templates文件夹中的ConfigMap模板文件中使用变量,例如configmap.yaml
3. 在configmap.yaml文件中,使用.Values.myConfigMapName来引用values.yaml中的变量。
下面是一个示例:
在values.yaml中定义变量:

myConfigMapName: application-properties

在templates文件夹中的configmap.yaml文件中使用变量:

configMapKeyRef:
  name: {{ .Values.myConfigMapName }}
  key: application_port

在上面的示例中,我们在values.yaml中定义了一个变量myConfigMapName,并在configmap.yaml文件中使用了这个变量。通过使用.Values.myConfigMapName,我们可以在configmap.yaml中引用values.yaml中的变量。

方案2

请注意以下操作注意版本差异及修改前做好备份。
另一种方法是将values.yaml重命名为values.yaml.j2(jinja2),并删除模板中的”tpl”。模板应该如下所示:

configMapKeyRef:
  name: {{ .Values.myConfigMapName }}
  key: application_port

在这个示例中,我们将values.yaml重命名为values.yaml.j2,并在模板中使用了变量.Values.myConfigMapName。这样,我们就可以在values.yaml中使用变量,并在模板中引用这些变量。
请注意,方案2中使用的是jinja2模板引擎,需要确保你的Helm版本支持jinja2模板引擎。

正文完