Gateway API v1.6:TCPRoute 和 UDPRoute 进阶为标准版

Gateway API 徽标

Kubernetes SIG Network 社区欣然宣布 Gateway API v1.6.0 发布!该版本已于今年 6 月 30 日发布。

Gateway API 已成为 Kubernetes 中现代化、面向角色且表达力强的服务网络标准。 在之前的版本中,Gateway API 已为 HTTP 和 TLS 第 7 层流量建立了生产级基础。 在 1.6.0 版本中,Gateway API 通过扩展标准的第 4 层协议路由,并为实验性创新引入更清晰的 API 边界,迈出了重要一步。

以下是 Gateway API v1.6.0 新特性的快速概览:

  • TCPRoute 和 UDPRoute 进阶为标准版:原始 L4 TCP 和 UDP 流量路由在 v1 API 版本中达到 GA 稳定级别。
  • 实验性 API 组分离:实验性资源迁移至独立的 API 组(gateway.networking.x-k8s.io), 并添加 X 前缀,使实验性与标准 API 的边界一目了然。

下面让我们深入了解详情!

TCPRoute 和 UDPRoute 进阶为标准版

负责人:Nick YoungRicardo KatzZac Nixon

此前,Gateway API 只为 HTTP 和 TLS 流量提供稳定的路由模型。 对于通过 TCP 或 UDP 使用原始协议的工作负载(例如数据库、DNS、VoIP、游戏和 IoT 遥测), 没有可移植的方式接入 Gateway。用户只能退回使用普通 Kubernetes Service, 或使用无法在不同 Gateway 控制器之间移植的、实现特定的 CRD。

TCPRouteUDPRoute 填补了这一空白:它们仅依据协议和端口将流量路由到后端,无需感知 L7。 在此版本中,两者均从 Experimental 通道升级到 Standard,并迁移到 v1 API 版本。 两个资源的 v1alpha2 版本自 v1.6 起被弃用,并将在未来版本中移除。

工作原理

Gateway 需要配置一个允许附加 TCPRoute 的监听器:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: example-gateway
spec:
  gatewayClassName: example-gateway-class
  listeners:
    - name: foo
      protocol: TCP
      port: 12345
      allowedRoutes:
        kinds:
          - kind: TCPRoute

随后,TCPRoute 会附加到该监听器并将流量转发到后端:

apiVersion: gateway.networking.k8s.io/v1
kind: TCPRoute
metadata:
  name: tcp-app
spec:
  parentRefs:
    - name: example-gateway
      sectionName: foo
  rules:
    - backendRefs:
        - name: my-foo-service
          port: 6000

到达 Gateway 端口 12345 的流量会被代理到 my-foo-service 的端口 6000 上的端点。 从 parentRefs 中省略 sectionNameport,会将路由附加到 Gateway 上的每个 TCP 监听器,而非其中的某一个。

UDPRoute 遵循相同模式;只需替换监听器协议和路由类型:

apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: example-gateway
spec:
  gatewayClassName: example-gateway-class
  listeners:
    - name: foo
      protocol: UDP
      port: 12345
      allowedRoutes:
        kinds:
          - kind: UDPRoute
---
apiVersion: gateway.networking.k8s.io/v1
kind: UDPRoute
metadata:
  name: udp-app
spec:
  parentRefs:
    - name: example-gateway
      sectionName: foo
  rules:
    - backendRefs:
        - name: my-foo-service
          port: 6000

XBackend 进入 Experimental

负责人:Keith Mattix II

Gateway API v1.6 引入了新的 XBackend 资源,它是 Gateway API 中适用于 Service(及其他后端类型)的通用装饰器。

Service 资源非常出色、稳定且灵活,但这也带来了一些代价:灵活性产生了许多 Gateway API 需要处理的边界情况, 而稳定性又使得无法为 Service 添加新概念。

XBackend 资源基于上游 EndpointSelector KEP 中的构想,新增了一个原生 Gateway API 对象,它仍指向后端应用,同时允许社区将其扩展到那些使用 Service 难以或不安全地处理的场景。

XBackend 的首个版本支持 ExternalHostname 目的地。由于可能发生混淆代理人攻击, Gateway API 不会在 Service 中支持这种目的地。

对于 XBackend,此支持属于 Extended/Optional 特性,允许实现和用户在理解安全权衡后选择启用。

该支持对于出口场景非常有用(最常见于集群托管的智能体工作负载)。 社区也正通过关于出口 Gateway 的 GEP 来正式化这一场景(仍在进行中,敬请关注!)。

XBackend API 处于实验阶段,其行为可能会变更;请勿假定它已可用于生产环境。

以下示例展示了一个带有 ExternalName 后端的 Gateway,可用于向云端 AI API 发起出口流量:

# Gateway 层级的 TLS 对入站连接仍具有最终决定权
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
spec:
  listeners:
  - name: https
    protocol: HTTPS
    tls:
      certificateRefs:
      - name: gateway-cert
---
# 用于外部目的地的后端资源
apiVersion: gateway.networking.x-k8s.io/v1alpha1
kind: XBackend
metadata:
  name: ai-provider-api
  namespace: ai-apps
spec:
  type: ExternalHostname
  externalHostname:
    hostname: api.ai-provider.com

---
# 引用 XBackend 的 HTTPRoute
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
spec:
  rules:
  - backendRefs:
    - name: ai-provider-api
      kind: XBackend
      group: gateway.networking.x-k8s.io

社区还在努力将会话保持配置从 XBackendTrafficPolicy 移至 XBackend。 其他工作包括重试、TLS 发起等用例,以及其他适合按应用而非按路由配置的类似设置。

实验性资源迁出标准 API 组

此前,实验性资源与标准资源共用同一个 API 组(gateway.networking.k8s.io),仅通过 v1alpha2 风格的版本号区分。TCPRoute 和 UDPRoute 是在该模式下最后升级的资源。

今后,新的实验性资源将在独立的 gateway.networking.x-k8s.io 组中定义, 其 API 类型名称将添加 X 前缀,例如 XBackend 和 XMesh。 当其中某个资源升级到 Standard 时,它会被重命名并迁移到 gateway.networking.k8s.io 组,同时移除 X 前缀;例如,预计 XMesh 将变为 Mesh。

这种分离在 API 组层面明确了实验性与标准 API 的边界,不再仅依赖版本字符串进行区分。

后续计划与参与方式

TCPRoute 和 UDPRoute 进阶为 Standard,是让 Gateway API 成为一个完整、通用的入口和服务网格网络 API 的重要里程碑,可服务 Kubernetes 工作负载在第 4 层和第 7 层协议上的需求。

试用

现在就可以搭配你偏好的 Gateway 控制器实现开始使用 Gateway API v1.6.0:

Gateway API 依赖广泛的兼容性测试套件,以确保所有实现都具备一致、可移植的行为。 以下是在本文发布当天,已符合 v1.6 标准的实现列表:

参与贡献

Gateway API 是 Kubernetes SIG Network 下的开放、社区驱动项目。欢迎所有人贡献、反馈和参与!

致谢

衷心感谢所有贡献者、审阅者、维护者和实现作者;正是他们的辛勤工作让 Gateway API v1.6.0 得以发布!

最后修改 August 03, 2026 at 8:58 AM PST: [zh] Add blog: gateway-api-v1-6-release (a0dc908efd)