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

GKE默认Ingress控制器下,多仓库如何用多Ingress实现扇出路由?

多仓库分管理GKE Ingress路由(共用LB)方案

在GKE上用默认的GCP Ingress控制器实现多仓库独立维护Ingress路由、共用同一个负载均衡器和子域名,核心是利用GCP Ingress对多Ingress资源的自动合并特性,具体操作如下:

1. 统一Ingress类与主机名

两个仓库的Ingress资源必须满足两个关键条件,才能被GCP控制器合并到同一个LB:

  • 都指定GKE默认的Ingress类:spec.ingressClassName: gce(旧版本用注解kubernetes.io/ingress.class: gce)
  • 都设置同一个子域名作为spec.rules.host

2. 各自定义专属路由规则

每个仓库只维护自身服务的路由路径,无需关心其他服务的配置:

仓库1(API服务)的Ingress示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: api-ingress
  namespace: default # 可根据实际命名空间调整
spec:
  ingressClassName: gce
  rules:
  - host: app.example.com
    http:
      paths:
      - path: /api/*
        pathType: ImplementationSpecific
        backend:
          service:
            name: api-service
            port:
              number: 80

仓库2(UI服务)的Ingress示例

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ui-ingress
  namespace: default # 可根据实际命名空间调整
spec:
  ingressClassName: gce
  rules:
  - host: app.example.com
    http:
      paths:
      - path: /*
        pathType: ImplementationSpecific
        backend:
          service:
            name: ui-service
            port:
              number: 80

3. 共享HTTPS证书(可选)

如果需要启用HTTPS,两个Ingress可以共用同一个证书资源:

  • 方式一:使用GCP托管证书,先创建ManagedCertificate资源,然后在两个Ingress的tls字段中引用它:
# 新增的ManagedCertificate示例(可放在任意仓库,或单独的配置仓库)
apiVersion: networking.gke.io/v1
kind: ManagedCertificate
metadata:
  name: app-cert
spec:
  domains:
  - app.example.com

# 在两个Ingress的spec中添加tls配置
spec:
  tls:
  - hosts:
    - app.example.com
    secretName: app-cert # 这里secretName对应ManagedCertificate的名字,GCP会自动生成证书并关联
  • 方式二:使用自定义证书Secret,两个Ingress引用同一个Secret即可。

验证与优势

  • 部署后执行kubectl get ingress,会看到两个Ingress的ADDRESS字段是同一个LB地址,说明合并成功
  • 每个仓库部署后可单独验证路由:比如API部署后直接测试app.example.com/api/xxx是否正常,无需依赖UI服务的配置
  • 完全隔离各服务的路由配置,避免单个仓库维护全量Ingress的耦合问题

注意事项

  • 路径不能冲突:两个Ingress不能定义完全相同的路径(如都定义/api/*),否则会导致路由异常,需提前规划好路径前缀
  • 跨命名空间访问:如果服务分布在不同命名空间,需要确保Ingress所在命名空间能访问到目标服务(可通过Service的跨 namespace 引用实现)
  • 合并延迟:GCP Ingress合并多Ingress资源需要1-2分钟,部署后请等待片刻再验证

内容的提问来源于stack exchange,提问作者Matthew Vines

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 08:16:02