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

如何用Overlay修改Kustomization?资源移除未生效问题排查

Kustomize Overlay无法移除Base中的Resource问题

目录结构

|- base
|  |- file1.yaml
|  |- file2.yaml
|  |- kustomization.yaml
|- overlays
   |- nofile2
      |- kustomization.yaml
      |- nofile2.yaml

Base配置(base/kustomization.yaml)

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
resources:
  - file1.yaml
  - file2.yaml

问题描述

想要通过overlays/nofile2的Kustomization构建时,执行base的配置但移除file2.yaml,但当前配置执行kustomize build overlays/nofile2后输出和base完全一致。

错误原因

你当前的patch配置没有生效,核心原因是Kustomize默认的patch作用目标是最终生成的Kubernetes业务资源(比如Deployment、Service等),而非父级的Kustomization配置对象。你的patch只指定了kind: Kustomization,但缺少apiVersion和name的匹配条件,导致无法命中base中的Kustomization实例。

解决方法

方法1:修正Patch的Target匹配条件

修改overlays/nofile2/kustomization.yaml,补充完整的target匹配规则,确保命中base的Kustomization对象:

resources:
  - ../../base
patches:
  - target:
      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      name: kustomization  # Kustomization对象默认名称为kustomization
    path: nofile2.yaml

nofile2.yaml的内容保持不变:

- op: delete
  path: /resources/1

方法2:使用内联Patch简化配置

可以把patch内容直接写在overlay的kustomization.yaml中,减少文件数量:

resources:
  - ../../base
patches:
  - target:
      apiVersion: kustomize.config.k8s.io/v1beta1
      kind: Kustomization
      name: kustomization
    patch: |-
      - op: delete
        path: /resources/1

方法3:更简洁的资源移除方式(Kustomize v5+)

如果你使用的是Kustomize v5及以上版本,可以直接使用excludeResources字段,无需编写patch:

resources:
  - ../../base
excludeResources:
  - file2.yaml

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 07:45:40