网关 API 网格支持已提升至稳定版
下一代 Kubernetes 流量路由 API 现已针对服务网格用例普遍可用。
我们很高兴地宣布,网关 API 中的服务网格支持现已正式进入“稳定版”!随着此版本(包含在网关 API v1.1 和 Istio v1.22 中),用户可以利用下一代流量管理 API 来处理入口(“南北”)和服务网格用例(“东西”)。
什么是网关 API?
网关 API 是一组作为 Kubernetes 一部分的 API,专注于流量路由和管理。这些 API 的灵感来自 Kubernetes 的 Ingress
和 Istio 的 VirtualService
和 Gateway
API,并履行着许多相同的功能。
自 2020 年以来,这些 API 一直在 Istio 及 广泛的协作 中开发,并且自那时以来已经取得了长足的进步。虽然该 API 最初仅针对服务入口用例(已于 去年 进入 GA),但我们一直设想允许在集群内也使用相同的 API 来处理流量。
随着此版本的发布,这一愿景成为现实:Istio 用户可以使用相同的路由 API 来处理其所有流量!
入门
在整个 Istio 文档中,所有示例都已更新以展示如何使用网关 API,因此探索一些 任务 以深入了解。
对于那些已经使用网关 API 来处理入口的用户以及那些今天使用 VirtualService
来处理服务网格的用户来说,使用网关 API 来处理服务网格应该感觉很熟悉。
- 与用于入口的网关 API 相比,路由目标为
Service
而不是Gateway
。 - 与
VirtualService
相比,在VirtualService
中,路由与一组hosts
相关联,而路由目标为Service
。
这是一个简单的示例,它演示了如何根据请求标头将请求路由到 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
分解来看,我们有几个部分
- 首先,我们确定应匹配哪些路由。通过将我们的路由附加到
reviews
Service,我们将此路由配置应用于最初目标为reviews
的所有请求。 - 接下来,
matches
配置用于选择此路由应处理哪些流量的条件。 - 可以选择修改请求。在这里,我们添加一个标头。
- 最后,我们为请求选择一个目的地。在此示例中,我们从应用程序的两个版本中选择一个。
有关更多详细信息,请参阅 Istio 的流量路由内部机制 和 网关 API 的 Service 文档。
我应该使用哪个 API?
由于职责(和名称)重叠,选择使用哪些 API 可能有点令人困惑。
以下是分解
API 名称 | 对象类型 | 状态 | 建议 |
---|---|---|---|
网关 API | HTTPRoute、Gateway 等 | 网关 API v1.0(2023)稳定版 | 对于新部署使用,特别是与 环境模式 一起使用 |
Istio API | Virtual Service、Gateway | Istio 1.22(2024)中的 v1 | 对于现有部署使用,或者需要高级功能时使用 |
Ingress API | Ingress | Kubernetes v1.19(2020)稳定版 | 仅用于传统部署 |
您可能会想知道,鉴于上述情况,为什么 Istio API 被 同时提升至 v1
?这是为了准确地对 API 的稳定性进行分类。虽然我们认为网关 API 是流量路由 API 的未来(以及现在!),但我们现有的 API 将长期存在,并具有完全的兼容性。这反映了 Kubernetes 对 Ingress
的做法,该 API 被提升至 v1
,同时将未来的工作指向网关 API。
社区
此稳定版升级代表了整个项目中无数小时工作和协作的成果。看看参与该 API 的 组织列表 并回顾我们取得的进步,真是令人难以置信。
特别感谢我的 该工作的共同负责人:Flynn、Keith Mattix 和 Mike Morris,以及无数其他参与者。