Helm Chart中Range循环内使用.Files.Get报nil错误,求正确语法
问题解决:Helm模板遍历数组读取文件报错
Unknown object "nil" 核心原因
报错是因为$.Files.Get的路径格式不符合要求——Helm的Files对象仅支持读取相对于Chart根目录的相对路径,如果路径以/开头,会被识别为系统绝对路径,而Helm不会加载外部系统文件,最终返回nil触发报错。
修复方案
方案1:修正values中的路径格式
直接移除path字段开头的斜杠,改为相对路径:
# values.yaml my_array: - name: hi path: some_path # 去掉开头的/,对应Chart根目录下的some_path文件 token: some_token
模板代码保持不变即可正常运行:
{{- range .Values.my_array }} {{ .name }}-data: {{ $.Files.Get .path }} {{ .name }}-token: {{ .token }} {{ end }}
方案2:模板内自动兼容路径前缀
如果需要兼容values中可能存在的开头斜杠,可以用Helm的trimPrefix函数自动去除路径开头的/:
{{- range .Values.my_array }} {{ .name }}-data: {{ $.Files.Get (trimPrefix "/" .path) }} {{ .name }}-token: {{ .token }} {{ end }}
额外注意事项
- 确保指定的路径对应文件确实存在于Chart目录结构中,比如路径写
config/app.conf,则Chart根目录下必须有config/app.conf文件; - Secret的
data字段要求内容为base64编码,若文件内容未编码,可添加b64enc函数处理:{{ .name }}-data: {{ $.Files.Get (trimPrefix "/" .path) | b64enc }}
内容的提问来源于stack exchange,提问作者ChikChak
相关产品推荐
相关产品推荐

