Helm ConfigMap泛化模板报错,请求技术排查指引
问题解决:Helm ConfigMap模板range循环中.Files引用错误
报错原因
在range循环内部,模板的上下文(.)会被替换成当前遍历的元素(即values.yaml里的单个文件名字符串),而这个字符串并没有.Files属性,所以调用.Files.Get时触发了参数错误。
解决方案
在进入range循环前,把包含.Files的根上下文保存到一个变量中,在循环内通过该变量来引用.Files。
修正后的模板代码
--- apiVersion: v1 kind: ConfigMap metadata: name: {{ .Values.configMap.name | quote }} labels: name: {{ .Values.configMap.name | quote }} data: {{- $root := . }} # 将根上下文存入变量$root {{- range $data := .Values.configMap.data }} {{ $data }}: |- {{ $root.Files.Get $data | indent 4}} {{- end}}
说明
$root := .把循环外的顶层上下文(包含.Files、.Values等核心对象)保存到变量$root中- 循环内通过
$root.Files.Get $data正确调用文件读取方法,避免了上下文切换导致的属性缺失问题
内容的提问来源于stack exchange,提问作者Manuelarte
相关产品推荐
相关产品推荐

