Helm生成多文件Secret报错:YAML转JSON失败如何修复?
修复Helm Secret模板的YAML解析错误
问题根源
你遇到的错误来自两个YAML语法问题:
.subPath的值被包裹在双引号中,渲染后键名变成带引号的格式(比如".file1"),不符合YAML键名的语法规则- 使用
indent 4处理多行value时,额外的缩进破坏了YAML块标量|的格式要求
修复后的模板代码
修改secret.yaml模板如下:
apiVersion: v1 kind: Secret metadata: name: {{ include "helm-template.fullname" . }}-file namespace: {{ .Release.Namespace }} labels: app: {{ include "helm-template.name" . }} chart: {{ include "helm-template.chart" . }} type: Opaque stringData: {{- range .Values.secretFiles }} {{ .subPath | trimPrefix "\"" | trimSuffix "\"" }}: | {{ .value | indent 4 }} {{- end }}
核心修复说明
- 清理键名引号:通过
trimPrefix和trimSuffix过滤器移除.subPath值前后的双引号,确保渲染后的键名是合法的.file1格式 - 修正缩进逻辑:将
indent 4的换行提前,让块标量|后直接换行,再给多行value的每一行添加4个空格缩进,完全符合YAML块标量的语法规范
验证渲染结果
修复后,模板会生成正确格式的YAML内容:
stringData: .file1: | This is a multiline value, aka heredoc.
此时执行helm install即可正常解析YAML,不会再出现格式错误。
内容的提问来源于stack exchange,提问作者RTC EG
相关产品推荐
相关产品推荐

