掌握Kubernetes流量管理新利器——Gateway API全面解析(一)

gateway-api 是一个 Kubernetes 项目,旨在为 Kubernetes 提供一个灵活、可扩展的 API 来管理和配置 API 网关。它的目标是简化服务网格和 API 网关的管理,使开发者能够更加方便地定义路由、流量管理、安全控制等功能,而不必依赖于具体的 API 网关实现(比如 Istio、NGINX、Traefik 等)。

主要特点:

  1. 统一 API:它提供了一种标准的方式来配置 API 网关,使得不同的网关实现能够一致地支持配置管理。
  2. 集成 Kubernetes 原生资源:与 Kubernetes 集成紧密,可以通过原生的 Kubernetes 资源(如 Gateway, HTTPRoute, TCPRoute 等)来定义路由和流量控制规则。
  3. 灵活性:支持丰富的流量管理功能,如路由规则、重试、限流、负载均衡、跨服务的 API 聚合等。
  4. 跨云支持:不依赖于特定的云提供商,可以在任何支持 Kubernetes 的平台上运行,支持跨云和混合云环境。
  5. 支持多种协议:不仅支持 HTTP/HTTPS,还可以支持 TCP、gRPC 等协议的路由和流量管理。

核心组件:

  1. Gateway: 定义一个网关的入口,类似于传统的 API 网关,提供负载均衡和流量转发。
  2. HTTPRoute / TCPRoute: 定义了如何将请求路由到后台的服务。可以配置 HTTP 路由规则、流量限制、重定向等。
  3. GatewayClass: 定义了网关的类别,允许根据不同的实现选择不同的网关类型。例如,选择基于 NGINX 的网关,或者是基于 Istio 的网关。
  4. UDPRoute: 针对 UDP 流量的路由规则。

应用场景:

  • API 网关:在微服务架构中,gateway-api 可以充当 API 网关,负责流量的入口管理,并将请求转发到正确的微服务。
  • 服务网格集成:它能够与服务网格(如 Istio 或 Linkerd)集成,提供更多的路由、流量控制和安全策略。
  • 跨环境路由:在多云或混合云环境中,可以使用 gateway-api 来管理不同环境之间的流量路由。

与其他 API 网关的比较:

与传统的 API 网关(如 Kong、NGINX、Traefik)不同,gateway-api 的目标是通过标准化的 Kubernetes API 来实现流量控制和路由,而不是固定绑定到某个网关实现上。这种方式使得用户能够使用多种不同的网关技术,并且通过一致的配置方式进行管理。

Gateway API 是 Kubernetes 官方项目,专注于 Kubernetes 中的 L4 和 L7 路由。该项目代表了下一代 Kubernetes Ingress、负载均衡和服务网格 API。从一开始,它就被设计成通用、富有表现力且面向角色的。

整体资源模型侧重于 3 个不同的 角色以及他们需要管理的相应资源:

此 API 中的大部分配置都包含在路由层中。这些特定于协议的资源(HTTPRoute、 GRPCRoute等)为入口和网状网络都提供了高级路由功能。

网关 API 徽标有助于说明此 API 的双重用途,使南北向(入口)和东西向(网状)流量能够共享相同的配置。