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

Minikube集群中Kustomize自动生成Ingress资源失败的求助

Kustomize多环境部署添加Ingress资源问题排查与实现方案

问题背景

已基于以下文件结构实现Kustomize多环境部署:

├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   ├── service.yaml
├── overlays
│   ├── prod
│   │   ├── application.properties
│   │   ├── kustomization.yaml
│   └── uat
│       ├── application.properties
│       ├── kustomization.yaml

计划在base目录添加ingress.yaml模板实现Ingress资源自动生成,调整后结构如下:

├── base
│   ├── deployment.yaml
│   ├── kustomization.yaml
│   ├── service.yaml
│   ├── ingress.yaml
├── overlays
│   ├── prod
│   │   ├── application.properties
│   │   ├── kustomization.yaml
│   └── uat
│       ├── application.properties
│       ├── kustomization.yaml

但执行kubectl apply -k .(prod环境)后,仅生成ConfigMap、Service和Deployment,未生成Ingress资源,需确认方案可行性并解决问题。

方案可行性说明

该方案完全可行,Kustomize支持通过base定义通用资源模板,再通过overlay实现多环境差异化配置,Ingress资源的管理逻辑与Deployment、Service一致。

问题排查与解决步骤

1. 检查base目录的kustomization.yaml配置

Kustomize仅会处理base/kustomization.yaml中resources字段声明的资源文件,若未添加ingress.yaml,则不会生成对应资源。修改base/kustomization.yaml如下:

resources:
- deployment.yaml
- service.yaml
- ingress.yaml # 添加这一行,声明Ingress资源

2. 确保Ingress模板语法正确

base/ingress.yaml需符合Kubernetes资源定义规范,以下是通用模板示例:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: app.example.com # 可通过overlay补丁修改为各环境域名
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app-service # 需与base中Service名称一致
            port:
              number: 80

3. 多环境Ingress差异化配置技巧

针对不同环境的域名、注解等差异化需求,可通过overlay的patches功能实现:

  • 在prod目录创建ingress-patch.yaml:
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-ingress
spec:
  rules:
  - host: prod.app.example.com
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: app-service
            port:
              number: 80
  • 修改prod/kustomization.yaml,添加补丁引用:
bases:
- ../../base

namespace: prod 

patches:
- replicas.yaml
- ingress-patch.yaml # 添加Ingress补丁

configMapGenerator:
- name: application.properties
  files: 
  - application.properties=application.properties

验证方法

执行以下命令查看生成的资源清单,确认Ingress是否包含在内:

kubectl kustomize . # 在prod目录下执行

若输出包含Ingress资源,再执行kubectl apply -k .即可完成部署。

内容的提问来源于stack exchange,提问作者it.drive.view

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 05:22:07