在 Istio 中擴展 Gateway API 支援
一個適用於服務網格的標準 API,在 Istio 和更廣泛的社群中。
今天,我們想恭喜 Kubernetes SIG Network 社群 Gateway API 規格發布 Beta 版本。與此里程碑同時,我們很高興地宣布在 Istio 入口使用 Gateway API 的支援已升級為 Beta 版,並且我們打算將 Gateway API 作為未來所有 Istio 流量管理預設的 API。我們也很高興歡迎來自 Service Mesh Interface (SMI) 社群的朋友,他們將加入我們的新行動,使用 Gateway API 標準化服務網格的使用案例。
Istio 流量管理 API 的歷史
API 設計與其說是一門科學,不如說是一門藝術,而 Istio 通常被用作配置其他 API 服務的 API!單就流量路由而言,我們必須考慮生產者與消費者、路由與後路由,以及如何用正確的物件數量來表達複雜的功能集,並考慮到這些物件必須由不同的團隊擁有。
當我們在 2017 年推出 Istio 時,我們帶來了多年來自 Google 生產 API 服務基礎設施和 IBM Amalgam8 專案的經驗,並將其映射到 Kubernetes 上。我們很快就遇到了 Kubernetes Ingress API 的限制。為了支援所有 Proxy 實作,Ingress 僅支援最基本的 HTTP 路由功能,其他功能通常作為供應商特定的註釋實作。Ingress API 在基礎設施管理員(「建立和配置負載平衡器」)、叢集操作員(「管理整個網域的 TLS 憑證」)和應用程式使用者(「使用它將 /foo 路由到 foo 服務」)之間共享。
我們在 2018 年初重寫了我們的流量 API,以解決使用者的意見回饋,並更充分地解決這些問題。
Istio 新模型的主要功能是具有描述基礎設施(負載平衡器,由閘道表示)和應用程式(路由和後路由,由VirtualService和DestinationRule表示)的單獨 API。
Ingress 作為不同實作之間的最低公分母運作良好,但其缺點導致 SIG Network 調查「版本 2」的設計。在2018 年的使用者調查之後,在很大程度上基於 Istio 的流量 API,於 2019 年提出了新 API 的提案。該行動後來被稱為「Gateway API」。
Gateway API 的建立旨在能夠模擬更多使用案例,並具有擴展點以啟用不同實作之間的功能差異。此外,採用 Gateway API 可使服務網格與支援它的整個軟體生態系統相容。您不必要求供應商直接支援 Istio 路由:他們需要做的就是建立 Gateway API 物件,而 Istio 將會開箱即用地完成其所需的工作。
Istio 中對 Gateway API 的支援
Istio 在 2020 年 11 月加入了對 Gateway API 的支援,其支援與 API 實作一起標記為 Alpha。隨著 API 規格的 Beta 版本發布,我們很高興地宣布在 Istio 中對入口使用的支援已升級為 Beta 版本。我們也鼓勵早期採用者開始試驗將 Gateway API 用於網格(服務到服務)用途,當 SIG Network 將所需的語義標準化後,我們將把該支援移至 Beta 版本。
在 API 的 v1 版本發布前後,我們打算使 Gateway API 成為配置 Istio 中所有流量路由(適用於入口(南北)和服務到服務(東西))的預設方法。屆時,我們將更改我們的文件和範例以反映此建議。
就像 Kubernetes 打算在 Gateway API 穩定發布後的多年內繼續支援 Ingress API 一樣,Istio API(閘道、VirtualService 和 DestinationRule)在可預見的未來仍將繼續受到支援。
不僅如此,您還可以繼續將現有的 Istio 流量 API 與 Gateway API 一起使用,例如,將HTTPRoute與 Istio VirtualService一起使用。
API 之間的相似性意味著我們將能夠提供一個工具來輕鬆地將 Istio API 物件轉換為 Gateway API 物件,並且我們將在 API 的 v1 版本發布時同時發布此工具。
Istio 功能的其他部分(包括原則和遙測)將繼續使用 Istio 特定的 API 進行配置,同時我們將與 SIG Network 合作,以標準化這些使用案例。
歡迎 SMI 社群加入 Gateway API 專案
在 Gateway API 的設計和實作過程中,Istio 團隊的成員一直與 SIG Network 的成員合作進行 Gateway API 的實作,以確保該 API 適用於網格使用案例。
我們很高興Service Mesh Interface (SMI) 社群的成員正式加入此項工作,其中包括來自 Linkerd、Consul 和 Open Service Mesh 的領導者,他們已共同決定將其 API 工作標準化為 Gateway API。為此,我們在 Gateway API 專案中建立了一個Gateway API 網格管理和管理 (GAMMA) 工作流程。Istio 技術監督委員會成員兼我們網路工作組負責人 John Howard 將擔任該組的負責人。
我們的下一步是向 Gateway API 專案提供增強提案,以支援網格使用案例。我們已開始研究網格流量管理的 API 語義,並將與在其專案中實作 Gateway API 的供應商和社群合作,以建立標準的實作。之後,我們打算為授權和驗證原則建立表示形式。
SIG Network 作為一個廠商中立的論壇,可確保服務網格社群使用相同的語義實作 Gateway API,我們期待擁有一個適用於所有專案的標準 API,無論其技術堆疊或 Proxy 為何。