diff --git a/content/zh/blog/2024/gateway-mesh-ga/index.md b/content/zh/blog/2024/gateway-mesh-ga/index.md new file mode 100644 index 0000000000..b21805b301 --- /dev/null +++ b/content/zh/blog/2024/gateway-mesh-ga/index.md @@ -0,0 +1,109 @@ +--- +title: "Gateway API 网格支持提升至稳定状态" +description: 下一代 Kubernetes 流量路由 API 现已普遍适用于服务网格用例。 +publishdate: 2024-05-13 +attribution: John Howard - solo.io; Translated by Wilson Wu (DaoCloud) +keywords: [istio, traffic, API] +target_release: 1.22 +--- + +我们很高兴地宣布 [Gateway API](https://gateway-api.sigs.k8s.io/) +中的服务网格支持现已正式“稳定”!在此版本中(Gateway API v1.1 和 Istio v1.22 的一部分), +用户可以将下一代流量管理 API 同时应用于入口(“南北向”)和服务网格内(“东西向”)用例。 + +## 什么是 Gateway API? {#what-is-the-gateway-api} + +Gateway API 是属于 Kubernetes 的 API 集合,专注于流量路由和管理。 +这些 API 受到 Kubernetes 的 `Ingress` 和 Istio 的 `VirtualService` 和 `Gateway` API 的启发, +并发挥许多相同的作用。 + +自 2020 年以来,这些 API 一直在 Istio 以及[广泛协作](https://gateway-api.sigs.k8s.io/implementations/)的组织中得到开发, +并且自那时以来已经取得了长足的进步。虽然这些 API 最初仅针对服务入口用例 +([去年](https://kubernetes.io/zh-cn/blog/2023/10/31/gateway-api-ga/)发布了 GA 版), +但我们一直设想允许相同的 API 也可用于集群**内**的流量。 + +在此版本中,这一愿景成为现实:Istio 用户可以对所有流量使用相同的路由 API! + +## 入门 {#getting-started} + +在整个 Istio 文档中,我们的所有示例都已更新,以展示如何使用 Gateway API, +因此请探索一些[任务](/zh/docs/tasks/traffic-management/)以获得更深入的理解。 + +使用 Gateway API 进行服务网格对于已经使用 Gateway API +进行入口的用户以及在服务网格中使用 `VirtualService` 的用户来说应该感到熟悉。 + +* 与用于入口的 Gateway API 相比,路由的目标由 `Gateway` 替代为`Service`。 +* 与 `VirtualService` 相比,路由与一组 `hosts` 关联,以 `Service` 为目标。 + +这是一个简单的示例,演示了根据请求头将请求路由到两个不同版本的 `Service`: + +{{< text yaml >}} +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 +{{< /text >}} + +将其分解后,我们得到几个部分: +* 首先,我们确定应该匹配哪些路由。通过将我们的路由附加到 `reviews` 服务, + 我们会将此路由配置应用于最初针对 `reviews` 的所有请求。 +* 接下来,`matches` 配置选择该路由应处理的流量标准。 +* 我们可以选择修改请求。在这里,我们添加一个标题。 +* 最后,我们选择请求的目标。在此示例中,我们在应用程序的两个版本之间进行选择。 + +有关更多详细信息,请参阅 [Istio 的流量路由内部结构](/zh/docs/ops/configuration/traffic-management/traffic-routing/) 和 +[Gateway API 的服务文档](https://gateway-api.sigs.k8s.io/mesh/service-facets/)。 + +## 我应该使用哪个 API? {#which-api-should-i-use} + +由于职责(和名称!)重叠,选择要使用的 API 可能会有点混乱。 + +以下是详细分析: + +| API 名称 | 对象类型 | 状态 | 推荐 | +|--------------|---------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------|----------------------------------------------------------------------------| +| Gateway API | [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/), [Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/), ... | Gateway API v1.0(2023)稳定 | 用于新部署,特别是 [Ambient 模式](/zh/docs/ambient/) | +| Istio API | [Virtual Service](/zh/docs/reference/config/networking/virtual-service/), [Gateway](/zh/docs/reference/config/networking/gateway/) | Istio 1.22(2024)中达到 `v1` | 用于现存部署或需要高级功能的地方 | +| Ingress API | [Ingress](https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress) | 在 Kubernetes v1.19(2020)中稳定 | 仅用于旧部署 | + +鉴于上述情况,您可能想知道为什么 Istio API 同时[被升级为 `v1`](/zh/blog/2024/v1-apis)? +这是对 API 的**稳定性**进行准确分类努力的一部分。 +虽然我们将 Gateway API 视为流量路由 API 的未来(和现在!), +但我们现有的 API 将长期保留,并具有完全兼容性。这印证了 Kubernetes +使用 [`Ingress`](https://kubernetes.io/zh-cn/docs/concepts/services-networking/ingress/) 的方法, +该方法被提升到 `v1`,同时将未来的工作导向 Gateway API。 + +## 社区 {#community} + +这种稳定性毕业代表了整个项目无数个小时的工作和协作的顶峰。 +看看 API 涉及的[组织列表](https://gateway-api.sigs.k8s.io/implementations/)并回想一下我们已经走了多远, +真是令人难以置信。 + +特别感谢我的[共同领导者](https://gateway-api.sigs.k8s.io/mesh/gamma/): +Flynn、Keith Mattix 和 Mike Morris,以及无数其他相关人员。 + +有兴趣参与,或者只是提供反馈吗?查看 Istio 的[社区页面](/zh/get-involved/)或 +Gateway API [贡献指南](https://gateway-api.sigs.k8s.io/contributing/)!