Kubernetes Gateway API:工程视角解析 - Kong公司

作者:API传播员 · 2025-11-16 · 阅读时间:4分钟
Kubernetes Gateway API 是一个网络资源管理工具,通过解耦路线与入口支持多种路由类型如 L4 和 L7,并引入 HTTPRoute 的标头匹配、方法匹配、查询参数匹配、后端权重和筛选器功能。它还支持跨命名空间引用和从 Ingress 迁移,提供标准化扩展能力,适用于生产环境网络管理。

Kubernetes Gateway API 的工程视角解析

Kubernetes Gateway API 是一个重要的网络资源管理工具,它通过将路线与入口解耦,为用户引入了多种类型的路由(如 L4 和 L7),并为未来扩展新的路由类型提供了可能性。本文将从工程视角解析 Gateway API 的核心功能及其应用场景。


支持的路由类型与新增功能

Gateway API 当前支持多种路由类型(处于不同成熟度级别),并在此基础上添加了全新的路由功能,旨在为用户提供更灵活的网络配置能力。

HTTPRoute 的功能解析

HTTP 请求标头匹配

在 HTTPRoute 中,Headers 字段支持 HTTP 请求标头匹配。多个匹配值被视为逻辑 AND,即请求必须匹配所有指定的标头条件,才能选择对应的路由。

HTTP 方法匹配

通过 HTTPRoute 的 Method 字段,用户可以指定需要匹配的 HTTP 动词。只有当请求的 HTTP 方法与指定值一致时,路由才会生效。

HTTP 查询参数匹配

QueryParams 字段允许用户指定请求中必须包含的查询参数。多个查询参数的匹配条件同样为逻辑 AND,即请求需满足所有指定参数条件,才能匹配到路由。

HTTP 路由后端权重

HTTPRoute 的 backendRef 支持设置后端权重,用于控制请求分发比例。权重计算公式为:

权重 / (此后端参考列表中所有权重的总和)

例如,若服务 A 的权重为 200,服务 B 的权重为 100,则约 2/3 的请求会被分发到服务 A。

HTTPRoute 筛选器

HTTPRoute 筛选器提供了对路由行为的进一步控制,例如修改请求标头或启用请求镜像。用户还可通过 ExtensionRef 字段附加自定义筛选器,例如将 Kong 插件集成到路由中。


跨命名空间引用的支持

与传统的 Ingress API 不同,Gateway API 支持跨命名空间引用对象。这种功能主要应用于以下场景:

  1. 跨命名空间的服务引用
    命名空间 A 中的“网关”和“路由”可以引用命名空间 B 中的服务。默认情况下,这种引用是被阻止的,但可以通过 ReferenceGrant API 启用。

  2. 跨命名空间的网关配置
    命名空间 B 中的“路由”可以配置命名空间 C 中的“网关”。此功能默认也被阻止,但可以通过 AllowedRoutes 字段启用。


从 Ingress 迁移到 Gateway API

Ingress2gateway 是一个专注于将 Ingress 和特定提供商资源(CRD)转换为 Gateway API 资源的项目。它基于提供者的实现方式,允许任何 Gateway API 实现贡献自己的提供者,将与 Ingress 相关的注释和 CRD 转换为 Gateway API 资源。

Kong 已实现了自己的提供者,并支持以下功能的迁移:

  • HTTPRoute 标头匹配
  • HTTPRoute 方法匹配
  • 插件引用转换为 HTTPRoute 的 ExtensionRef 筛选器
  • TCPIngress 转换为 Gateway、TCPRoute 和 TLSRoute
  • UDPIngress 转换为 Gateway 和 UDPRoute

Gateway API 的标准化扩展

Gateway API 提供了一种标准化方式来为 API 添加功能。通过其灵活的架构设计,用户可以更高效地管理和扩展 Kubernetes 网络资源。


结论

Gateway API 是 Kubernetes 历史上最具协作性的 API 之一,由多个供应商和社区成员共同推动,确保其成为一个长期适用的标准。随着 Gateway API 的正式发布,它已经可以在生产环境中使用,为用户提供了更强大的网络管理能力。

原文链接: https://konghq.com/blog/engineering/kubernetes-gateway-api-engineering-perspective