PatchStrategicMergeTransformer打补丁致DeploymentConfig容器配置丢失求助
问题原因
你当前使用的PatchStrategicMergeTransformer没有正确触发Kubernetes针对容器数组的按名称合并逻辑,导致整个portal容器条目被补丁内容直接替换,而非合并新增的resources字段。
解决办法
办法一:改用Kustomize原生patches字段(推荐)
删掉自定义的PatchStrategicMergeTransformer配置,直接在kustomization.yaml中使用Kustomize原生的补丁配置,它会自动识别DeploymentConfig的容器合并规则:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - base/deploymentconfig.yaml patches: - path: patches/add-resources-patch.yaml target: group: apps.openshift.io version: v1 kind: DeploymentConfig name: portal
你的现有补丁文件patches/add-resources-patch.yaml无需修改,Kustomize会自动将resources字段合并到原有的portal容器中,保留镜像、端口、探针等所有原有配置。
办法二:使用JSON6902补丁精准修改
如果需要更精确的字段控制,可以改用JSON补丁来添加resources字段,彻底避免替换容器条目:
- 创建
patches/add-resources-patch.json文件,内容如下:
[ { "op": "add", "path": "/spec/template/spec/containers/0/resources", "value": { "limits": { "cpu": "1", "memory": "512Mi" }, "requests": { "cpu": "0.5", "memory": "256Mi" } } } ]
- 修改
kustomization.yaml引用该JSON补丁:
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - base/deploymentconfig.yaml patches: - path: patches/add-resources-patch.json target: group: apps.openshift.io version: v1 kind: DeploymentConfig name: portal
内容的提问来源于stack exchange,提问作者Jordi
相关产品推荐
相关产品推荐

