首页
/ Kubernetes Gateway API:下一代Ingress控制器详解

Kubernetes Gateway API:下一代Ingress控制器详解

2026-02-05 05:37:53作者:申梦珏Efrain

Kubernetes Gateway API 是 Kubernetes 社区推出的用于配置和管理网关的新一代 API,它是 Ingress 资源的演进版本,提供了更强大、更灵活和更具表达力的流量管理能力。🚀 作为下一代 Ingress 控制器,Gateway API 解决了传统 Ingress 在表达能力、可扩展性和角色分离方面的限制,为云原生应用提供了标准化的网络入口管理方案。

什么是 Kubernetes Gateway API?

Gateway API 是一个由 Kubernetes 网络特殊兴趣小组 (SIG-NETWORK) 维护的开源项目,旨在通过提供表达性强、可扩展和面向角色的接口来改进服务网络。它不仅仅是 Ingress 的替代品,而是一个完整的演进版本。

传统 Ingress 的局限性

  • 表达能力有限:Ingress 只能处理简单的 HTTP 路由
  • 可扩展性差:依赖于特定控制器的注解来扩展功能
  • 角色混乱:缺乏清晰的角色分离和权限边界

Gateway API 核心架构解析

Gateway API 引入了三个核心资源,构成了完整的网络入口管理体系:

GatewayClass:网关类定义

GatewayClass 定义了一组网关,这些网关共享公共配置和行为。它类似于 StorageClass,但用于网关:

apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: example-class
spec:
  controllerName: example.com/gateway-controller

Gateway:网关实例

Gateway 描述了如何将流量转换为集群内的服务。它定义了监听器,每个监听器定义一个端口、协议和主机名:

Gateway API 架构

HTTPRoute:HTTP 路由规则

HTTPRoute 定义了 HTTP 请求如何路由到后端服务,支持复杂的匹配条件和过滤规则:

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: example-route
spec:
  parentRefs:
  - name: example-gateway
  hostnames:
  - "api.example.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /api/v1
    backendRefs:
    - name: api-service
      port: 8080

Gateway API v1.3.0 新特性深度解析

基于百分比的请求镜像

v1.3.0 引入了基于百分比的请求镜像功能,允许将指定百分比的请求镜像到另一个后端,这对于测试和监控非常有用:

filters:
- type: RequestMirror
  requestMirror:
    backendRef:
      name: test-service
      port: 8080
    percent: 10  # 镜像 10% 的请求

CORS 过滤器增强

新增的 CORS 过滤器支持跨域资源共享配置,简化了前端应用的部署:

CORS 策略配置

重试预算控制

重试预算功能限制客户端在服务端点间的重试行为,防止级联故障:

retry:
  attempts: 3
  backoff: "1s"
  budget:
    percentage: 20  # 最多 20% 的请求可以重试

Gateway API 与 Ingress 的详细对比

特性 Ingress Gateway API
协议支持 仅 HTTP/HTTPS HTTP/HTTPS/TCP/UDP/TLS/gRPC
角色分离 清晰的角色分离
可扩展性 通过注解 原生 API 扩展
表达能力 有限 丰富的流量管理能力
类型安全 部分 完全类型安全

快速入门:5分钟部署 Gateway API

前置条件准备

  1. 安装 Gateway API CRDs
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/standard-install.yaml
  1. 安装实验性特性
kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.3.0/experimental-install.yaml

基础配置部署

按照以下顺序部署示例配置:

# 部署基础 Gateway API 配置
kubectl apply -f manifests/gateway-api/basic/

# 部署新特性示例
kubectl apply -f manifests/gateway-api/v1.3-features/

从 Ingress 到 Gateway API 的平滑迁移指南

迁移步骤详解

  1. 创建 GatewayClass:定义网关控制器类型
  2. 部署 Gateway:配置网络监听器和 TLS 设置
  3. 转换路由规则:将 Ingress 规则转换为 HTTPRoute

迁移示例对比

原 Ingress 配置

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: example-ingress
spec:
  rules:
  - host: example.com
    http:
      paths:
      - path: /
        backend:
          service:
            name: example-service
            port:
              number: 80

转换后的 HTTPRoute

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: example-route
spec:
  parentRefs:
  - name: nginx-gateway
  hostnames:
  - "example.com"
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: example-service
      port: 80

Gateway API 最佳实践与性能优化

部署最佳实践

  1. 渐进式迁移:先在测试环境验证,再逐步迁移生产环境
  2. 角色分离:明确定义不同角色的职责和权限
  3. 监控观察:部署适当的监控和日志记录
  4. 安全配置:使用 TLS 终止和适当的安全策略

性能优化技巧

  • 负载均衡策略:选择合适的负载均衡算法
  • 连接池管理:优化后端服务的连接池配置
  • 缓存策略:合理配置缓存以提高性能

支持的控制器与生态系统

Gateway API 拥有丰富的生态系统支持:

  • Envoy Gateway:官方推荐的参考实现
  • Istio:服务网格的领导者
  • Cilium:基于 eBPF 的高性能实现
  • Airlock Gateway:企业级解决方案

总结:为什么选择 Gateway API?

Kubernetes Gateway API 代表了 Kubernetes 网络入口管理的未来方向。它通过清晰的 API 设计、强大的功能和丰富的生态系统,为现代云原生应用提供了理想的网络入口解决方案。💡

无论您是刚开始接触 Kubernetes 的新手,还是已经在生产环境中运行大规模集群的专家,Gateway API 都值得您深入了解和采用。

官方文档路径:manifests/gateway-api/README.md 基础配置示例:manifests/gateway-api/basic/gateway.yaml

登录后查看全文
热门项目推荐
相关项目推荐