如何让Kustomize补丁仅更新容器,创建时触发错误?
实现Kustomize补丁仅更新不创建容器并报错
要让Kustomize仅在目标容器存在时执行更新,不存在则直接报错,你可以通过RFC 6902格式的Json补丁实现——这类补丁的路径定位是精确匹配的,当指定的容器不存在时,构建过程会直接抛出错误,不会自动创建新容器,刚好能解决你之前遇到的重复容器问题。
具体操作步骤:
- 创建Json格式的补丁文件(比如命名为
update-backend-image.json),内容如下:
[ { "op": "replace", "path": "/spec/template/spec/containers/name=backend/image", "value": "ghcr.io/foo/bar" } ]
这里通过name=backend的字段选择器精准匹配目标容器,replace操作仅会对已存在的容器镜像进行更新。
- 在你的
kustomization.yaml中引用这个补丁:
patches: - target: group: apps version: v1 kind: Deployment name: foo namespace: foo-system path: update-backend-image.json
效果验证:
- 当目标Deployment中存在
backend容器时,kustomize build会正常执行并完成镜像更新; - 当容器不存在时,构建会抛出类似
jsonpatch: replace operation does not apply: doc is missing path的错误,直接终止流程,避免意外创建重复容器。
内容的提问来源于stack exchange,提问作者guettli
相关产品推荐
相关产品推荐

