與您的 Sidecar 告別:Istio 的環境模式在 v1.22 版本中達到 Beta 階段
第 4 層和第 7 層功能現在都已準備好用於生產環境。
今天,Istio 革命性的新環境資料平面模式已達到 Beta 階段。環境模式旨在簡化操作、擴展應用程式相容性並降低基礎架構成本。它為您提供了一個無 Sidecar 的資料平面,該平面已整合到您的基礎架構中,同時保持 Istio 零信任安全性、遙測和流量管理的核心功能。
環境模式於 2022 年 9 月宣布。從那時起,我們的社群投入了 20 個月的辛勤工作和協作,其中包括來自 Solo.io、Google、Microsoft、Intel、Aviatrix、Huawei、IBM、Red Hat 和許多其他公司的貢獻。1.22 中的 Beta 狀態表示環境模式的功能現在已準備好用於生產工作負載,並採取適當的預防措施。這是 Istio 的一個重要里程碑,它將第 4 層和第 7 層網格功能都帶入了生產準備就緒狀態,而無需 Sidecar。
為什麼選擇環境模式?
在聽取 Istio 使用者的回饋時,我們觀察到對應用程式的網格功能的需求不斷增長,但許多人發現 Sidecar 的資源開銷和操作複雜性難以克服。Sidecar 使用者與我們分享的挑戰包括在新增 Sidecar 後 Istio 如何破壞應用程式、Sidecar 對 CPU 和記憶體的巨大消耗,以及每次新代理程式發布時都需要重新啟動應用程式 Pod 的不便。
作為一個社群,我們設計了環境模式來解決這些問題,減輕了使用者在實作服務網格時先前遇到的複雜性障礙。新的功能集被命名為「環境模式」,因為它的設計對您的應用程式是透明的,確保無需額外組態即可採用它,並且不需要使用者重新啟動應用程式。
在環境模式中,可以輕鬆地將應用程式新增或移除出網格。您現在可以簡單地標記命名空間,該命名空間中的所有應用程式都會新增到網格中。這會立即使用 mTLS 保護所有流量的安全,而無需 Sidecar 或重新啟動應用程式。
有關我們為什麼建立環境模式的更多資訊,請參閱介紹環境網格部落格。
環境模式如何使採用更容易?
Istio 的環境模式引入了輕量級、共用的第 4 層 (L4) 節點代理和可選的第 7 層 (L7) 代理,從而消除了資料平面中對傳統 Sidecar 代理的需求。環境模式背後的關鍵創新是它將 L4 和 L7 處理切分為兩個不同的層。這種分層方法使您可以逐步採用 Istio,從無網格平穩過渡到安全覆蓋 (L4),再到可選的完整 L7 處理 — 根據需要在整個機群中按每個命名空間進行。
環境模式的工作方式不需要對您現有的 Kubernetes 部署進行任何修改。您可以標記命名空間以將其所有工作負載新增到網格中,或根據需要選擇加入某些部署。透過使用環境模式,使用者可以繞過 Sidecar 模型先前的一些限制性元素。現在可以使用伺服器首先發送的協定,大多數保留連接埠現在都可用,並且消除了容器繞過 Sidecar 的能力(無論是惡意的還是非惡意的)。
輕量級的共用 L4 節點代理稱為ztunnel(零信任通道)。Ztunnel 大幅減少了執行網格的開銷,而無需在叢集中過度配置記憶體和 CPU 來處理預期的負載。在某些使用案例中,節省量可能超過 90% 或更多,同時仍然使用具有加密身分的相互 TLS、簡單的 L4 授權策略和遙測來提供零信任安全性。
L7 代理稱為航點。航點處理 L7 功能,例如流量路由、豐富的授權策略強制執行和企業級復原能力。航點在您的應用程式部署之外執行,並且可以根據您的需求獨立擴展,這可能是針對整個命名空間或命名空間內的多個服務。與 Sidecar 相比,您不需要每個應用程式 Pod 一個航點,您可以根據其範圍有效地擴展航點,因此在大多數情況下可以節省大量的 CPU 和記憶體。
L4 安全覆蓋層和 L7 處理層之間的分離允許逐步採用環境模式資料平面,這與早期二進制「全入式」注入 Sidecar 的方式不同。使用者可以從安全的 L4 覆蓋開始,該覆蓋提供了人們部署 Istio 的大多數功能(mTLS、授權策略和遙測)。然後可以根據具體情況啟用複雜的 L7 處理,例如重試、流量分割、負載平衡和可觀察性收集。
Beta 範圍內有哪些?
我們建議您在測試環境中驗證環境模式的以下 Beta 功能後,在生產環境中採用適當的預防措施進行探索
- 安裝 Istio 並支援環境模式.
- 將您的工作負載新增到網格中以獲得具有加密身分的相互 TLS、L4 授權策略和遙測。
- 設定航點以使用 L7 功能,例如流量轉移、請求路由和豐富的授權策略強制執行。
- 將 Istio 入口閘道連線到環境模式下的工作負載,支援所有現有的 Istio API。
- 使用
istioctl
來操作航點,並對 ztunnel 和航點進行疑難排解。
Alpha 功能
我們希望在環境模式中包含的許多其他功能已實作,但在此版本中仍處於 Alpha 狀態。請協助測試它們,以便它們可以在 1.23 或更高版本中升級為 Beta
- 多叢集安裝
- DNS 代理
- 與 Sidecar 的互通性
- IPv6/雙堆疊
- SOCKS5 支援(用於出站)
- Istio 的經典 API(
VirtualService
和DestinationRule
)
路線圖
我們有許多功能尚未在環境模式中實作,但計劃在即將發布的版本中推出
- 受控出口流量
- 多網路支援
- 改進資源上的
status
訊息,以幫助對網格進行疑難排解和理解 - VM 支援
Sidecar 怎麼樣?
Sidecar 不會消失,並且仍然是 Istio 中的一等公民。您可以繼續使用 Sidecar,它們將繼續受到完全支援。對於環境模式的 Alpha 或 Beta 範圍之外的任何功能,您應該考慮使用 Sidecar 模式,直到該功能新增到環境模式中。某些使用案例(例如基於來源標籤的流量轉移)仍然最好使用 Sidecar 模式來實作。雖然我們認為大多數使用案例都最好使用環境模式中的網格,但 Istio 專案仍然致力於持續支援 Sidecar 模式。
立即試用環境模式
隨著 Istio 的 1.22 版本和環境模式的 Beta 版本發布,現在比以往任何時候都更容易在您自己的工作負載上試用 Istio。請依照入門指南來探索環境模式,或閱讀我們新的使用者指南,以了解如何逐步採用環境模式來實現相互 TLS 和 L4 授權策略、流量管理、豐富的 L7 授權策略等等。您可以在Istio Slack 上的 #ambient 頻道中與開發人員互動,或在 GitHub 上使用討論論壇,以提出您可能有的任何問題。