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 進行入口的使用者,以及今天使用 VirtualService
進行服務網格的使用者來說,使用 Gateway API 進行服務網格應該會感到熟悉。
- 與用於入口的 Gateway API 相比,路由的目標是
Service
,而不是Gateway
。 - 與
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) 中穩定 | 用於新的部署,尤其是在環境模式下 |
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
方法類似,Ingress
已升級為 v1
,同時將未來的工作導向 Gateway API。
社群
這種穩定性畢業代表了整個專案中無數小時的工作和協作的頂峰。看看參與 API 的組織列表,並回顧我們已經走了多遠,真是令人難以置信。
特別感謝我的專案共同領導:Flynn、Keith Mattix 和 Mike Morris,以及其他無數參與者。