1. Gateway API(Gateway/HTTPRoute)相对 Ingress 的演进中角色分离(GatewayClass/Gateway/HTTPRoute)、跨命名空间路由与 gRPC 支持
Gateway API 相对 Ingress 有哪些演进?GatewayClass/Gateway/HTTPRoute 如何实现角色分离,如何支持跨命名空间路由与 gRPC?
- 角色分离(GatewayClass/Gateway/HTTPRoute)
- 跨命名空间路由与引用权限
- gRPC 与其他协议支持
Gateway API 是 Ingress 的演进,核心是角色分离:GatewayClass 描述可实现网关的类(如 nginx、istio),由平台管理员定义;Gateway 描述具体网关实例(监听端口、协议、承载的 listener),由基础设施团队管理;HTTPRoute 描述具体的路由规则(匹配+转发),由应用开发者管理。三者分离让不同角色各管其责。相比 Ingress:支持跨命名空间引用(HTTPRoute 可引用其他命名空间的 Backend/Service,需 referenceGrant 授权),支持多协议(HTTP、gRPC、TCP、TLS),更丰富的匹配与后端(weight、filter、retry)。gRPC 通过 GRPCRoute 或 HTTPRoute 的 protocol 支持。
核心是"标准化、角色分离、可移植、多协议"。Ingress 缺乏标准规则与跨 ns 支持,Gateway API 正在成为新一代标准。
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata: { name: my-gw }
spec:
gatewayClassName: nginx
listeners:
- name: http
port: 80
protocol: HTTP
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata: { name: app-route }
spec:
parentRefs: [{ name: my-gw, namespace: infra }]
rules:
- matches: [{ path: { type: PathPrefix, value: /api } }]
backendRefs: [{ name: app-svc, port: 8080 }]