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

如何在Kustomize指定Overlay中添加额外Ingress资源?

解决方法

你不需要修改base目录的ingress.yml,通过以下方式就能实现dev/staging环境多一个Ingress实例,同时不影响prod:

方法一:直接在dev/staging添加独立Ingress资源

这是最直接的方案,核心是让新增的Ingress和base里的资源名不同(避免Kustomize自动合并同名资源):

  1. 在dev/ingress.yml和staging/ingress.yml中定义全新的Ingress(注意metadata.name和base的myService区分开):
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: myService-extra  # 自定义名字,与base的myService不重复
spec:
  ingressClassName: default
  # 填写该环境特有的路由规则,比如dev环境的测试路径
  1. 修改dev/kustomization.yml和staging/kustomization.yml,将本地的ingress.yml加入resources列表:
resources:
- ../base  # 继承base的所有资源
- ingress.yml  # 添加当前环境的额外Ingress

执行kustomize build dev时,最终清单会包含两个Ingress:base里的myService,以及dev环境新增的myService-extra。prod环境的kustomization.yml保持只引用../base,因此只会保留base的单个Ingress。

方法二:用组件复用额外Ingress(适用于dev/staging配置相似的场景)

如果dev和staging的额外Ingress配置大部分一致,可以抽成组件减少重复代码:

  1. 在base同级目录新建components/extra-ingress目录,创建ingress.yml和kustomization.yml:
  • components/extra-ingress/ingress.yml:内容与方法一中的新增Ingress一致
  • components/extra-ingress/kustomization.yml:
resources:
- ingress.yml
  1. 修改dev/kustomization.yml和staging/kustomization.yml,引入该组件:
resources:
- ../base
components:
- ../components/extra-ingress

prod环境不引入该组件,自然不会生成额外的Ingress。

关于你之前尝试无效的原因

你提到从patchesStrategicMerge移除ingress.yml没用,是因为patchesStrategicMerge是用来修改已有资源的,而你需要的是新增资源,应该用resources或components来添加。另外,如果你的dev/staging的ingress.yml和base的Ingress重名(都是myService),Kustomize会自动合并两个资源而非新增,这也是你误以为要修改base的核心原因——只要把新增Ingress的名字改得不一样,就能避免合并逻辑。

内容的提问来源于stack exchange,提问作者s.singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 08:42:20