常规用法
apiVersion: v1
kind: ConfigMap
metadata:
name: templates
binaryData:
file1: {{ .Files.Get "files/file1" | b64enc }}
file2: {{ .Files.Get "files/file2" | b64enc }}
# 错误示例
apiVersion: v1
kind: ConfigMap
metadata:
name: templates
binaryData:
{{- range $.Values.templates.files }}
{{ . }}: {{ .Files.Get "files/fil1" | b64enc }}
{{- end }}
进阶用法
在Go text/template语言中,.
是一个具有多种含义的特殊变量。值得注意的是,在range
循环中,.成为循环中的当前项,
因此.Files
引用当前循环项中的Files
字段,而不是顶级Helm对象。可以通过将.
或.Files
保存到循环外部的局部变量中来解决此问题
binaryData:
{{- $files := .Files }}
{{- range $.Values.templates.files }}
{{ . }}: {{ $files.Get "files/file" | b64enc }}
{{- end }}