Gateway API 網格支援升級為穩定版

下一代 Kubernetes 流量路由 API 現在已普遍適用於服務網格用例。

2024 年 5 月 13 日 | 作者:John Howard - solo.io

我們很高興地宣布,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 進行入口的使用者,以及今天使用 VirtualService 進行服務網格的使用者來說,使用 Gateway API 進行服務網格應該會感到熟悉。

這是一個簡單的範例,示範如何根據請求標頭將請求路由到 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) 中穩定用於新的部署,尤其是在環境模式
Istio APIVirtual Service, GatewayIstio 1.22 (2024) 中的 v1用於現有部署,或需要進階功能時
Ingress APIIngressKubernetes v1.19 (2020) 中穩定僅用於舊版部署

您可能會想知道,鑑於以上情況,為什麼 Istio API 會同時升級到 v1?這是準確分類 API 穩定性 的一部分工作。雖然我們將 Gateway API 視為流量路由 API 的未來(和現在!),但我們現有的 API 將長期存在,並具有完全的相容性。這與 Kubernetes 的 Ingress 方法類似,Ingress 已升級為 v1,同時將未來的工作導向 Gateway API。

社群

這種穩定性畢業代表了整個專案中無數小時的工作和協作的頂峰。看看參與 API 的組織列表,並回顧我們已經走了多遠,真是令人難以置信。

特別感謝我的專案共同領導:Flynn、Keith Mattix 和 Mike Morris,以及其他無數參與者。

有興趣參與其中,甚至只是提供意見回饋嗎?請查看 Istio 的社群頁面或 Gateway API 的貢獻指南

分享此文章