首页/云/Kubernetes 速查/Gateway API 简介与 Ingress 的关系
网络与服务55 条

Gateway API 简介与 Ingress 的关系

Kubernetes 新一代入口/网关标准:GatewayClass、Gateway、HTTPRoute 分角色管理,表达力强于 Ingress;处于逐步普及阶段,选型前确认生态支持。

Kubernetes 速查云更新于 2026-10-13

Gateway API 是什么

Gateway API 是 Kubernetes 新一代的入口与网关标准,用一组 CRD 描述流量入口:GatewayClass 声明由哪个实现来服务,Gateway 描述监听器、端口、证书等入口资源,HTTPRoute 描述域名与路径到后端服务的路由规则。相比 Ingress,它把「平台团队管入口」与「应用团队管路由」的职责分开,表达能力也更强;生态仍在演进,选型前需要确认所用实现的支持程度。

基本信息

提供形式以 CRD 扩展提供,集群未安装则不显示相关资源
核心对象GatewayClass、Gateway、HTTPRoute
职责划分平台团队管入口资源,应用团队管路由规则
组名gateway.networking.k8s.io
与 Ingress 的关系可以并存,支持逐步迁移

典型使用场景

  • 新集群选型:入口方案评估时对比表达力与生态支持
  • 多团队协作:平台提供入口、业务自助配置路由
  • 复杂路由需求:需要按请求头、权重等更细粒度分流
  • 迁移评估:评估从 Ingress 迁移所需改动与风险
  • 职责治理:把入口资源与应用路由的权限边界分开

HTTPRoute 示例

HTTPRoute 示例
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: web-route
  namespace: prod
spec:
  parentRefs:
    - name: shared-gateway        # 引用平台提供的 Gateway
  hostnames: ["app.example.com"]
  rules:
    - matches:
        - path:
            type: PathPrefix
            value: /
      backendRefs:
        - name: web
          port: 80

查看资源

查看资源
kubectl get gatewayclass
kubectl get gateway -A
kubectl get httproute -A
kubectl api-resources | grep gateway.networking.k8s.io
kubectl describe httproute web-route -n prod | tail -20   # 看状态条件与引用是否成功

对象分工

对象归属作用
GatewayClass基础设施团队声明由哪个实现来服务
Gateway平台团队监听器、端口、证书与入口地址
HTTPRoute应用团队域名与路径到后端服务的路由
与 Ingress 对比跨团队职责分层更清晰,表达能力更强
不同实现支持的 CRD 版本与特性差异较大:迁移前做一次能力核对,不要按某个实现的行为去推断通用语义。
Gateway 一般由平台统一管理:应用团队直接修改会碰到权限与职责边界问题,路由规则写在 HTTPRoute 里更合适。
排查路由不生效时先看 HTTPRoute 的状态条件:父级引用是否被接受、条件里的原因是定位权限、实现能力还是配置错误的第一手线索。

易错点

  • 集群未安装 CRD 就提交清单:报错为找不到资源类型,容易被误判成权限或命名空间问题
  • 按单个实现的文档推断通用行为:更换实现后路由表现不一致
  • 应用团队直接改 Gateway:与平台职责冲突,可能影响其他租户的入口
  • 与 Ingress 混用却不理清优先级:同一域名存在两套规则,流量走向难以预测

数据来源与参考

  • Kubernetes 官方文档 · Gateway API(相关项目)
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌