我正在尝试将来自values.yaml内的映射的变量模板化为最终的Kubernetes ConfigMap YAML。
我已经阅读了https://github.com/helm/helm/issues/2492和https://helm.sh/docs/chart_template_guide/,但似乎找不到答案。
在某些情况下,这大致就是我想做的:
values.yaml
config:
key1: value
key2: value-{{ .Release.Name }}
configmap.yaml
kind: ConfigMap
data:
config-file: |
{{- range $key, $value := .Values.config }}
{{ $key }} = {{ $value }}
{{- end }}
所需的输出将是:
头盔模板--name v1 mychart /
kind: ConfigMap
data:
config-file: |
key1 = value
key2 = value-v1
我尝试了使用模板函数和流水线的一些变体,但无济于事:
{{ $key }} = {{ tpl $value . }}
{{ $key }} = {{ $value | tpl . }}
{{ $key }} = {{ tpl $value $ }}
答案 0 :(得分:2)
上面的方法也可以这样
values.yaml
config:
key1: "value"
key2: "value-{{ .Release.Name }}"
configmap.yaml
kind: ConfigMap
data:
config-file: |
{{- range $key, $value := .Values.config }}
{{ $key }} = {{ tpl $value $ }}
{{- end }}
我更改的是:我将值放在value.yaml
中的引号中,并在配置映射中使用模板tpl
。
答案 1 :(得分:2)
关于这个话题有 in this PR here 争吵。
我知道现在有可能,但这需要在内部维护图表(例如 Amrut 的回答)。
让我们总结一下:
要在 values.yaml
中使用模板,以下是可用选项:
helm 将来可能会支持这一点(观看有关此主题的 thread。)
在图表内使用 tpl 函数
在 helm 之上使用另一个工具:terraform 或 helmfile。
答案 2 :(得分:1)
设法使用以下语法解决了这个问题:
configmap.yaml
kind: ConfigMap
data:
config-file: |
{{- range $key, $value := .Values.config }}
{{ $key }} = {{ tpl ($value | toString) $ }}
{{- end }}