Gateway API 网格支持提升至稳定状态
下一代 Kubernetes 流量路由 API 现已普遍适用于服务网格用例。
我们很高兴地宣布 Gateway API 中的服务网格支持现已正式“稳定”!在此版本中(Gateway API v1.1 和 Istio v1.22 的一部分), 用户可以将下一代流量管理 API 同时应用于入口(“南北向”)和服务网格内(“东西向”)用例。
什么是 Gateway API?
Gateway API 是属于 Kubernetes 的 API 集合,专注于流量路由和管理。
这些 API 受到 Kubernetes 的 Ingress
和 Istio 的 VirtualService
和 Gateway
API 的启发,
并发挥许多相同的作用。
自 2020 年以来,这些 API 一直在 Istio 以及广泛协作的组织中得到开发, 并且自那时以来已经取得了长足的进步。虽然这些 API 最初仅针对服务入口用例 (去年发布了 GA 版), 但我们一直设想允许相同的 API 也可用于集群内的流量。
在此版本中,这一愿景成为现实:Istio 用户可以对所有流量使用相同的路由 API!
入门
在整个 Istio 文档中,我们的所有示例都已更新,以展示如何使用 Gateway API, 因此请探索一些任务以获得更深入的理解。
使用 Gateway API 进行服务网格对于已经使用 Gateway API
进行入口的用户以及在服务网格中使用 VirtualService
的用户来说应该感到熟悉。
- 与用于入口的 Gateway API 相比,路由的目标由
Gateway
替代为Service
。 - 与
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
服务, 我们会将此路由配置应用于最初针对reviews
的所有请求。 - 接下来,
matches
配置选择该路由应处理的流量标准。 - 我们可以选择修改请求。在这里,我们添加一个标题。
- 最后,我们选择请求的目标。在此示例中,我们在应用程序的两个版本之间进行选择。
有关更多详细信息,请参阅 Istio 的流量路由内部结构 和 Gateway API 的服务文档。
我应该使用哪个 API?
由于职责(和名称!)重叠,选择要使用的 API 可能会有点混乱。
以下是详细分析:
API 名称 | 对象类型 | 状态 | 推荐 |
---|---|---|---|
Gateway API | HTTPRoute, Gateway, … | Gateway API v1.0(2023)稳定 | 用于新部署,特别是 Ambient 模式 |
Istio API | Virtual Service, Gateway | Istio 1.22(2024)中达到 v1 | 用于现存部署或需要高级功能的地方 |
Ingress API | Ingress | 在 Kubernetes v1.19(2020)中稳定 | 仅用于旧部署 |
鉴于上述情况,您可能想知道为什么 Istio API 同时被升级为 v1
?
这是对 API 的稳定性进行准确分类努力的一部分。
虽然我们将 Gateway API 视为流量路由 API 的未来(和现在!),
但我们现有的 API 将长期保留,并具有完全兼容性。这印证了 Kubernetes
使用 Ingress
的方法,
该方法被提升到 v1
,同时将未来的工作导向 Gateway API。
社区
这种稳定性毕业代表了整个项目无数个小时的工作和协作的顶峰。 看看 API 涉及的组织列表并回想一下我们已经走了多远, 真是令人难以置信。
特别感谢我的共同领导者: Flynn、Keith Mattix 和 Mike Morris,以及无数其他相关人员。