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
相关产品推荐
相关产品推荐

