Gateway API 网格支持提升至稳定状态

下一代 Kubernetes 流量路由 API 现已普遍适用于服务网格用例。

May 13, 2024 | 作者 John Howard - solo.io; Translated by Wilson Wu - DaoCloud

我们很高兴地宣布 Gateway API 中的服务网格支持现已正式“稳定”!在此版本中(Gateway API v1.1 和 Istio v1.22 的一部分), 用户可以将下一代流量管理 API 同时应用于入口(“南北向”)和服务网格内(“东西向”)用例。

什么是 Gateway API?

Gateway API 是属于 Kubernetes 的 API 集合,专注于流量路由和管理。 这些 API 受到 Kubernetes 的 Ingress 和 Istio 的 VirtualServiceGateway API 的启发, 并发挥许多相同的作用。

自 2020 年以来,这些 API 一直在 Istio 以及广泛协作的组织中得到开发, 并且自那时以来已经取得了长足的进步。虽然这些 API 最初仅针对服务入口用例 (去年发布了 GA 版), 但我们一直设想允许相同的 API 也可用于集群的流量。

在此版本中,这一愿景成为现实:Istio 用户可以对所有流量使用相同的路由 API!

入门

在整个 Istio 文档中,我们的所有示例都已更新,以展示如何使用 Gateway API, 因此请探索一些任务以获得更深入的理解。

使用 Gateway API 进行服务网格对于已经使用 Gateway API 进行入口的用户以及在服务网格中使用 VirtualService 的用户来说应该感到熟悉。

这是一个简单的示例,演示了根据请求头将请求路由到两个不同版本的 Service

apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: reviews
spec:
  parentRefs:
  - group: ""
    kind: Service
    name: reviews
    port: 9080
  rules:
  - matches:
    - headers:
      - name: my-favorite-service-mesh
        value: istio
    filters:
    - type: RequestHeaderModifier
      requestHeaderModifier:
      add:
        - name: hello
          value: world
    backendRefs:
    - name: reviews-v2
      port: 9080
  - backendRefs:
    - name: reviews-v1
      port: 9080

将其分解后,我们得到几个部分:

有关更多详细信息,请参阅 Istio 的流量路由内部结构Gateway API 的服务文档

我应该使用哪个 API?

由于职责(和名称!)重叠,选择要使用的 API 可能会有点混乱。

以下是详细分析:

API 名称对象类型状态推荐
Gateway APIHTTPRoute, Gateway, …Gateway API v1.0(2023)稳定用于新部署,特别是 Ambient 模式
Istio APIVirtual Service, GatewayIstio 1.22(2024)中达到 v1用于现存部署或需要高级功能的地方
Ingress APIIngress在 Kubernetes v1.19(2020)中稳定仅用于旧部署

鉴于上述情况,您可能想知道为什么 Istio API 同时被升级为 v1? 这是对 API 的稳定性进行准确分类努力的一部分。 虽然我们将 Gateway API 视为流量路由 API 的未来(和现在!), 但我们现有的 API 将长期保留,并具有完全兼容性。这印证了 Kubernetes 使用 Ingress 的方法, 该方法被提升到 v1,同时将未来的工作导向 Gateway API。

社区

这种稳定性毕业代表了整个项目无数个小时的工作和协作的顶峰。 看看 API 涉及的组织列表并回想一下我们已经走了多远, 真是令人难以置信。

特别感谢我的共同领导者: Flynn、Keith Mattix 和 Mike Morris,以及无数其他相关人员。

有兴趣参与,或者只是提供反馈吗?查看 Istio 的社区页面或 Gateway API 贡献指南

Share this post