2020 年的 Istio - 順應潮流
Istio 在 2020 年的願景聲明和路線圖。
Istio 解決了人們在運行微服務時遇到的實際問題。即使是非常早期的預發布版本,也幫助使用者除錯架構中的延遲、提高服務的可靠性,並透明地保護防火牆後的流量。
去年,Istio 專案經歷了重大成長。在第一季發布 1.1 版本之前,經過 9 個月的醞釀期,我們設定了每季發布一次的目標。我們知道持續且可預測地交付價值非常重要。隨著三個版本如期在後續季度發布,我們很自豪能夠達成這個目標。
在那段時間裡,我們改進了建置和測試基礎設施,從而提高了品質並簡化了發布週期。我們加倍重視使用者體驗,增加了許多命令,使網格的操作和除錯更加容易。我們也看到貢獻產品的開發人員和公司數量大幅增加,最終使我們成為GitHub 最快成長專案前十名中的第四名!
我們對 2020 年的 Istio 有雄心勃勃的目標,並且正在進行許多重大工作,但同時我們堅信良好的基礎設施應該是「無聊」的。在生產環境中使用 Istio 應該是無縫的體驗;效能不應成為問題,升級應該是無足輕重的事件,複雜的任務應該自動化。憑藉我們在更強大的擴展性方面的投資,我們認為服務網格領域的創新步伐可以加快,同時 Istio 專注於保持其卓越的穩定性。有關我們在 2020 年的主要工作的更多詳細資訊如下。
更流暢、更順暢、更快速
Istio 從一開始就提供了可擴展性,並由一個名為 Mixer 的元件實作。Mixer 是一個平台,允許自訂的配接器作為資料平面和您用於策略或遙測的後端之間的中介。Mixer 必然會增加請求的開銷,因為它要求擴展必須在進程外進行。因此,我們正在轉向一種可以直接在代理中啟用擴展的模型。
Mixer 的大多數策略強制執行用例已經通過 Istio 的驗證和授權策略解決,這些策略允許您直接在代理中控制工作負載到工作負載和最終使用者到工作負載的授權。常見的監控用例也已移至代理中 - 我們已引入代理內支援,用於將遙測資料發送到 Prometheus 和 Stackdriver。
我們的基準測試顯示,新的遙測模型可大幅減少我們的延遲,並提供業界領先的效能,延遲和 CPU 消耗均減少 50%。
Istio 可擴展性的新模型
取代 Mixer 的模型使用 Envoy 中的擴展來提供更多功能。Istio 社群正在領導在 Envoy 中實作WebAssembly (Wasm) 執行階段,這讓我們可以實作模組化、沙盒化,並以超過 20 種語言之一開發的擴展。擴展可以動態載入和重新載入,而代理會繼續提供流量。Wasm 擴展還能夠以 Mixer 無法實現的方式擴展平台。它們可以充當自訂協定處理程式,並在有效負載通過 Envoy 時轉換有效負載 — 簡而言之,它們可以執行與內建於 Envoy 中的模組相同的功能。
我們正在與 Envoy 社群合作,尋找發現和散佈這些擴展的方法。我們希望使 WebAssembly 擴展像容器一樣易於安裝和執行。我們的許多合作夥伴都編寫了 Mixer 配接器,我們正在一起將它們移植到 Wasm。我們也正在開發有關如何編寫自訂整合擴展的指南和程式碼實驗室。
通過變更擴展模型,我們還可以刪除數十個 CRD。您不再需要為每個與 Istio 整合的軟體使用唯一的 CRD。
使用「預覽」設定檔安裝 Istio 1.5 不會安裝 Mixer。如果您從先前的版本升級或安裝「預設」設定檔,為了安全起見,我們仍然會保留 Mixer。當使用 Prometheus 或 Stackdriver 進行指標監控時,我們建議您嘗試新模式,看看效能提升了多少。
如果您需要,可以保持安裝並啟用 Mixer。最終,Mixer 將成為 Istio 的一個單獨發佈的附加元件,它是istio-ecosystem的一部分。
更少的活動部件
我們也正在簡化其餘控制平面的部署。為此,我們將幾個控制平面元件合併為一個元件:Istiod。此二進位檔包含 Pilot、Citadel、Galley 和 sidecar injector 的功能。這種方法改進了 Istio 安裝和管理的許多方面 — 降低了安裝和設定的複雜性、維護工作和問題診斷時間,同時提高了響應能力。請在Christian Posta 的這篇文章中閱讀有關 Istiod 的更多資訊。
我們將 Istiod 作為 1.5 中所有設定檔的預設值交付。
為了減少每個節點的佔用空間,我們正在移除用於散佈憑證的節點代理,並將其功能移至 istio-agent,該代理已經在每個 Pod 中執行。對於那些喜歡圖片的人,我們將從這個……
轉變為這個……
在 2020 年,我們將繼續投資於引導,以實現我們的「零設定」預設目標,該預設不需要您變更任何應用程式的設定即可利用大多數 Istio 功能。
改進的生命週期管理
為了改進 Istio 的生命週期管理,我們轉向了基於運算子的安裝。我們引入了IstioOperator CRD 和兩種安裝模式
- 人工觸發:使用 istioctl 將設定套用至叢集。
- 機器觸發:使用一個控制器,該控制器會持續監控 CRD 的變更,並即時影響這些變更。
在 2020 年,升級也將變得更加容易。我們將新增對 Istio 控制平面新版本的「金絲雀部署」支援,這允許您在現有版本旁執行新版本,並逐漸切換資料平面以使用新版本。
預設安全性
Istio 已經為強大的服務安全性提供了基礎:可靠的工作負載身分、強大的存取策略和全面的稽核記錄。我們正在穩定這些功能的 API;許多 Alpha API 將在 1.5 版中升級為 Beta 版,我們預計它們將在 2020 年底之前全部升級為 v1 版。若要了解有關 API 狀態的更多資訊,請參閱我們的功能頁面。
預設情況下,網路流量也變得更加安全。在許多使用者在預覽中啟用之後,相互 TLS 的自動推出正在成為 Istio 1.5 中推薦的做法。
此外,我們將使 Istio 需要更少的權限並簡化其相依性,這反過來又使其成為更健全的系統。在過去,您必須使用 Kubernetes 機密將憑證掛載到 Envoy 中,這些機密作為檔案掛載到每個代理中。透過利用機密探索服務,我們可以安全地散佈這些憑證,而不必擔心它們被機器上的其他工作負載攔截。此模式將成為 1.5 中的預設模式。
移除節點代理不僅簡化了部署,還消除了對叢集範圍的 PodSecurityPolicy
的要求,進一步改善了叢集的安全態勢。
其他功能
以下是您可以在 2020 年從 Istio 期待的一些更令人興奮的事物的快照
- 與更多託管的 Kubernetes 環境整合 - 目前有 15 家廠商提供由 Istio 驅動的服務網格,包括 Google、IBM、Red Hat、VMware、阿里巴巴和華為
- 對
istioctl
及其協助診斷問題的能力進行更多投資 - 將基於 VM 的工作負載更好地整合到網格中
- 繼續努力使多叢集和多網路網格更易於設定、維護和執行
- 與更多服務探索系統整合,包括功能即服務
- 實作目前正在開發中的新的Kubernetes 服務 API
- 一個增強功能儲存庫,用於追蹤功能開發
- 讓您更容易在不需要 Kubernetes 的情況下執行 Istio!
從海洋到天空,我們很高興看到您接下來將 Istio 帶向何方。