You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何替换Kubernetes ConfigMap中嵌入YAML的指定嵌套map属性

解决方案

首选工具是 yq v4,比kustomize适配这类场景的成本低很多。

你之前用kustomize不生效的原因很简单:patchesStrategicMerge 仅支持对K8s资源的顶层字段做合并逻辑,而你ConfigMap里的application.yaml本质是字符串类型的内嵌yaml内容,kustomize不会自动解析这个字符串的内部结构做深层合并,所以才会出现输出只有补丁内容的问题,如果你非要用kustomize实现需要写非常繁琐的JSON6902格式补丁,完全没必要。

yq单命令修改方案

你只要安装好yq v4版本,执行一行命令就能直接完成修改:

yq e '.data."application.yaml" |= (fromyaml | .config.my-map-property = {"1":5, "2":6, "3":7, "4":8} | toyaml)' my-configMap.yaml

命令逻辑说明:

  • 先用fromyaml把application.yaml的字符串内容转成可编辑的yaml结构体
  • 直接修改结构体下的config.my-map-property为你需要的新map值
  • 最后用toyaml把修改后的结构体转回字符串,写回原字段

如果需要直接将修改后的ConfigMap应用到集群,直接管道给kubectl即可:

yq e '.data."application.yaml" |= (fromyaml | .config.my-map-property = {"1":5, "2":6, "3":7, "4":8} | toyaml)' my-configMap.yaml | kubectl apply -f -

内容的提问来源于stack exchange,提问作者hudi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 20:54:02