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

使用yq inline替换后YAML文件后端配置丢失的问题排查

解决yq命令修改多Deployment YAML后丢失后端配置的问题

问题原因

你执行的命令用select(.kind == "Deployment" and .metadata.name == "app-frontend")直接筛选出目标Deployment,在eval-all模式下,未匹配的app-backend文档会被直接丢弃,最终写入文件时只剩修改后的前端配置。

正确命令写法

写法1:针对匹配文档修改,其余保留

yq eval-all -i '(. | select(.kind == "Deployment" and .metadata.name == "app-frontend")) |= (.spec.template.spec.containers[] |= (select(.name == "app-frontend") | .image |= sub(":.*", ":new-tag")))' try.yaml
  • 外层的(. | select(...)) |= ...表示:仅对符合条件的文档应用修改操作,其余文档保持原样。
  • 内部的修改逻辑和你原命令一致,只修改app-frontend容器的镜像标签。

写法2:用条件判断显式保留所有文档

yq eval-all -i 'if .kind == "Deployment" and .metadata.name == "app-frontend" then .spec.template.spec.containers[] |= (select(.name == "app-frontend") | .image |= sub(":.*", ":new-tag")) else . end' try.yaml
  • 通过if-else逻辑明确处理所有文档:匹配目标则修改,否则直接返回原文档,确保没有内容丢失。

验证效果

执行上述命令后,try.yaml中的app-backend配置会完整保留,app-frontend的镜像标签会被替换为:new-tag。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 13:57:07