如何在Helm模板中传递多文件名并读取至ConfigMap的data字段
问题解决方案
错误原因是在range循环内部,模板的上下文(.)已切换为当前遍历的文件名字符串,不再包含根上下文的Files对象,因此无法访问.Files。
提供两种可行解决方法:
方法1:用$引用根上下文的Files
Helm模板中$始终指向根上下文,直接通过它访问Files即可:
apiVersion: v1 kind: ConfigMap metadata: name: {{ .Values.configmapFromFile.name }} data: {{- range $fileName := .Values.configmapFromFile.fileNames }} {{ $fileName }}: |- {{ $.Files.Get $fileName | indent 4 }} {{- end }}
方法2:提前将根上下文的Files存入变量
在循环前把根上下文的Files赋值给变量,循环内直接使用该变量:
apiVersion: v1 kind: ConfigMap metadata: name: {{ .Values.configmapFromFile.name }} data: {{- $files := .Files }} {{- range $fileName := .Values.configmapFromFile.fileNames }} {{ $fileName }}: |- {{ $files.Get $fileName | indent 4 }} {{- end }}
验证效果
使用你提供的多文件名values配置:
configmapFromFile: name: test-config fileNames: - config1.properties - config2.properties
模板渲染后会生成包含两个文件内容的ConfigMap,每个文件名对应一个data字段,值为对应文件的完整内容。
内容的提问来源于stack exchange,提问作者Avi_Tech
相关产品推荐
相关产品推荐

