Helm模板.Files.Get函数

发布时间 2023-04-17 12:32:03作者: Outsrkem

 常规用法

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 }}