Helm部署PostgreSQL报YAML转JSON第24行未找到预期键错误
问题根因
你遇到的YAML解析错误是由volumes字段下的条目缩进错误导致的,报错指向的第24行对应StatefulSet配置中的卷定义部分。
1. 是否存在无效的YAML语法?
- 存在无效语法。你直接用yamllint检测原始Helm模板显示合法,是因为模板还没经过Helm渲染,渲染后生成的最终YAML会出现语法错误,所以helm部署时才会抛出解析失败的报错。
2. 是否存在缩进缺失问题?
- 存在缩进错误,具体错误位置:
# 错误写法 - emptyDir: { } name: postgres-disk
name字段的缩进等级比同级的emptyDir多了4格,不符合YAML语法要求,同级的键需要保持相同缩进。
另外需要检查{{ include "xxx.volumes.logs.spec" . | indent 8 }}渲染后的内容缩进是否和其他volumes下的条目保持一致,避免额外的缩进问题。
3. 此处缺少哪个配置节点?
- 没有缺少配置节点,完全是缩进错误导致YAML解析器无法识别
name是当前卷条目的键,因此抛出「未找到期望的key」的报错。
修复方案
将错误的卷定义缩进修正即可:
volumes: {{ include "xxx.volumes.logs.spec" . | indent 8 }} # 修正后的写法,emptyDir和name保持同级缩进 - emptyDir: { } name: postgres-disk
修正后先执行helm template命令渲染模板,检查渲染后的最终YAML语法无误后再执行部署即可。
内容的提问来源于stack exchange,提问作者Yashika Chandra
相关产品推荐
相关产品推荐

