Kubernetes Helm-在values.yaml中模板化变量

Kubernetes Helm-在values.yaml中模板化变量,kubernetes,kubernetes-helm,templating,Kubernetes,Kubernetes Helm,Templating,我试图将values.yaml中的映射中的变量模板化为最终的Kubernetes ConfigMap yaml 我通读了一遍,但似乎找不到答案 在某些情况下,这大致就是我要做的: 值。yaml config: key1: value key2: value-{{ .Release.Name }} kind: ConfigMap data: config-file: | {{- range $key, $value := .Values.config }} {{ $k

我试图将values.yaml中的映射中的变量模板化为最终的Kubernetes ConfigMap yaml

我通读了一遍,但似乎找不到答案

在某些情况下,这大致就是我要做的:

值。yaml

config:
  key1: value
  key2: value-{{ .Release.Name }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ $value }}
    {{- end }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl ($value | toString) $ }}
    {{- end }}
config:
  key1: "value"
  key2: "value-{{ .Release.Name }}"
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl $value $ }}
    {{- end }}
configmap.yaml

config:
  key1: value
  key2: value-{{ .Release.Name }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ $value }}
    {{- end }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl ($value | toString) $ }}
    {{- end }}
config:
  key1: "value"
  key2: "value-{{ .Release.Name }}"
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl $value $ }}
    {{- end }}
其中所需的输出为:

头盔模板——名称v1 mychart/

kind: ConfigMap
data:
  config-file: |
    key1 = value
    key2 = value-v1
我尝试了一些使用模板函数和管道的变体,但没有成功:

{{ $key }} = {{ tpl $value . }}
{{ $key }} = {{ $value | tpl . }}
{{ $key }} = {{ tpl $value $ }}

已使用以下语法设法解决此问题:

configmap.yaml

config:
  key1: value
  key2: value-{{ .Release.Name }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ $value }}
    {{- end }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl ($value | toString) $ }}
    {{- end }}
config:
  key1: "value"
  key2: "value-{{ .Release.Name }}"
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl $value $ }}
    {{- end }}

上述措施也会以这种方式发挥作用

值。yaml

config:
  key1: value
  key2: value-{{ .Release.Name }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ $value }}
    {{- end }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl ($value | toString) $ }}
    {{- end }}
config:
  key1: "value"
  key2: "value-{{ .Release.Name }}"
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl $value $ }}
    {{- end }}
configmap.yaml

config:
  key1: value
  key2: value-{{ .Release.Name }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ $value }}
    {{- end }}
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl ($value | toString) $ }}
    {{- end }}
config:
  key1: "value"
  key2: "value-{{ .Release.Name }}"
kind: ConfigMap
data:
  config-file: |
    {{- range $key, $value := .Values.config }}
    {{ $key }} = {{ tpl $value $ }}
    {{- end }}
我改变的是:我在
value.yaml
中加了引号,并在配置图中使用了模板
tpl

关于这个话题有争论

我知道现在这是可能的,但这需要在内部维护图表(例如Amrut的答案)

让我们总结一下:

要在
values.yaml
中使用模板,可以使用以下选项:

  • helm将来可能会支持这一点(请关注此主题。)

  • 在图表中使用tpl功能

  • 在头盔上使用另一个工具:地形或头盔文件