Kustomize如何批量Patch名称含指定前缀的Deployment资源
批量Patch名称带指定前缀的Deployment的解决方法
问题说明
需要批量修改名称以nginx-为前缀的多个Deployment(如nginx-v1、nginx-deployment),但原配置存在两个问题导致补丁不生效:
- 将
namePrefix写在补丁文件中,误解了其作用:namePrefix是kustomization的顶层字段,用于给生成的资源名称添加前缀,而非匹配补丁的目标资源; - 使用
patchesStrategicMerge需要精确匹配资源名称,无法通过前缀批量匹配目标资源。
解决方案
改用kustomize的patches字段,通过target选择器结合通配符匹配名称前缀,实现批量补丁。
1. 编写补丁文件(示例命名为scale-replicas.yaml)
apiVersion: apps/v1 kind: Deployment spec: replicas: 10
2. 修改kustomization.yml配置
apiVersion: kustomize.config.k8s.io/v1beta1 kind: Kustomization resources: - deployment-v1.yaml - deployment-v2.yaml patches: - target: kind: Deployment name: nginx-* # 通配符匹配所有名称以nginx-开头的Deployment path: scale-replicas.yaml
扩展:通过标签批量匹配
如果目标资源有统一标签(比如两个Deployment都带有app: web标签),也可以用标签选择器实现批量补丁,修改patches部分如下:
patches: - target: kind: Deployment labelSelector: app=web path: scale-replicas.yaml
内容的提问来源于stack exchange,提问作者Pradyskumar
相关产品推荐
相关产品推荐

