Helm安装预运行时遇values.yaml加载失败:YAML转JSON错误
Helm安装values.yaml解析错误修复
问题重现
使用以下values.yaml文件:
configMap: name: {{ .Release.Name }}-config values: mongoUrl: mongo-service secret: name: {{ .Release.Name }}-secret values: mongoUser: bW9uZ291c2Vy mongoPassword: bW9uZ29wYXNzd29yZA==
执行命令:
helm install --dry-run mongo ./mychart
出现错误:
Error: INSTALLATION FAILED: cannot load values.yaml: error converting YAML to JSON: yaml: line 1: did not find expected key
错误原因
values.yaml的作用是提供静态配置参数,它本身不支持Helm模板语法({{ ... }}这类变量)。Helm会先尝试将values.yaml解析为标准YAML/JSON结构,模板语法的存在破坏了YAML的格式规则,导致解析失败。
修复步骤
修改values.yaml,移除模板变量
只保留静态配置值,动态生成的内容移到Chart模板中:configMap: values: mongoUrl: mongo-service secret: values: mongoUser: bW9uZ291c2Vy mongoPassword: bW9uZ29wYXNzd29yZA==在Chart模板中定义动态名称
- 在
templates/configmap.yaml中配置ConfigMap的名称和数据:apiVersion: v1 kind: ConfigMap metadata: name: {{ .Release.Name }}-config data: {{ toYaml .Values.configMap.values | indent 2 }} - 在
templates/secret.yaml中配置Secret的名称和数据:apiVersion: v1 kind: Secret metadata: name: {{ .Release.Name }}-secret type: Opaque data: {{ toYaml .Values.secret.values | indent 2 }}
- 在
重新执行安装命令
再次运行helm install --dry-run mongo ./mychart即可正常解析。
内容的提问来源于stack exchange,提问作者Tzach Solomon
相关产品推荐
相关产品推荐

