如何将多行JSON正确插入替换ConfigMap.yaml中的配置内容
ConfigMap内嵌JSON内容替换方法
核心注意点:YAML中|标记后的多行文本块,所有行必须保持统一缩进,否则会出现YAML解析错误,替换时只要保证缩进和键层级匹配即可,以下是三种常用实现方式:
- 手动编辑修改
打开本地ConfigMap.yaml文件,找到data层级下的appsettings.k8s.json: |行,删除该行下方原有的全部旧JSON内容,将JSON1文件的内容粘贴到该位置,调整所有JSON行的缩进为4个空格(相对于YAML行首的缩进,和目标示例格式对齐),保存后即可得到符合要求的文件。 - kubectl命令生成(适用于集群操作场景)
如果ConfigMap需要部署到K8s集群,不需要手动调整格式,直接执行以下命令,会自动读取JSON1文件内容生成格式正确的ConfigMap YAML:
生成的kubectl create configmap someCF --from-file=appsettings.k8s.json=./JSON1.json --dry-run=client -o yaml > updated_ConfigMap.yamlupdated_ConfigMap.yaml就是你需要的最终效果,直接执行kubectl apply -f updated_ConfigMap.yaml即可完成集群侧更新。 - yq工具自动化替换(适用于脚本批量处理场景)
如果需要在自动化流程中完成替换,可以使用yq(YAML命令行处理工具,需提前安装4.x以上版本)执行一键替换:yq eval ".data.\"appsettings.k8s.json\" = \"$(cat JSON1.json)\"" ConfigMap.yaml > updated_ConfigMap.yaml
格式校验提示:替换完成后可以用yamllint或者
kubectl apply --dry-run=client -f 文件名的方式验证YAML格式是否正确,避免因为缩进错误导致部署失败。
内容的提问来源于stack exchange,提问作者YuriyF
相关产品推荐
相关产品推荐

