介紹 istiod:簡化控制平面

Istiod 將 Istio 控制平面的組件整合到單一二進位檔中。

2020 年 3 月 19 日 | 作者:Craig Box - Google

當微服務將服務對應到交付它們的不同團隊,或者當獨立部署和獨立擴展的價值大於編排成本時,微服務是一個很棒的模式。我們經常與在真實環境中運行 Istio 的客戶和團隊交談,他們告訴我們 Istio 控制平面並非如此。因此,在 Istio 1.5 中,我們更改了 Istio 的打包方式,將控制平面功能整合到一個名為 istiod 的單一二進位檔中。

Istio 控制平面的歷史

Istio 實作了一種在 Google 和 IBM 使用多年的模式,後來被稱為「服務網格」。透過將客戶端和伺服器程序與代理伺服器配對,它們充當應用程式感知的資料平面,而不僅僅是在主機之間移動數據包或在電線上傳輸脈衝。

這種模式幫助世界接受微服務:透過輕量級協定連接的細粒度、鬆散耦合的服務。像 HTTP 和 gRPC 這樣通用的跨平台和跨語言標準取代了專有傳輸,並且所需函式庫的廣泛存在,使不同的團隊能夠以最合理的語言編寫整個架構的不同部分。此外,每個服務都可以根據需要獨立擴展。為此類網路實施安全性、可觀察性和流量控制的願望推動了 Istio 的普及。

Istio 的控制平面本身就是一個現代的雲原生應用程式。因此,它從一開始就被構建為一組微服務。諸如服務發現 (Pilot)、配置 (Galley)、憑證生成 (Citadel) 和可擴展性 (Mixer) 之類的單獨 Istio 組件都被編寫並部署為單獨的微服務。這些組件需要安全地通信並具有可觀察性,這為 Istio 提供了「吃自己的狗食」(或者,用更法式的比喻來說,「喝自己的香檳」)的機會!

複雜性的代價

好的團隊會回顧他們的選擇,並且在事後諸葛的角度下重新審視它們。一般來說,當團隊採用微服務及其固有的複雜性時,他們會尋找其他領域的改進來證明權衡的合理性。讓我們透過這個角度來看看 Istio 控制平面。

整合的好處:介紹 istiod

在確定微服務的許多常見好處不適用於 Istio 控制平面之後,我們決定將它們統一到一個單一的二進位檔中:istiod(「d」代表 daemon)。

讓我們看看新封裝的好處

istiod 將 Pilot、Galley、Citadel 和 sidecar injector 先前執行的功能整合到單一二進位檔中。

一個單獨的組件 istio-agent 有助於每個 sidecar 透過安全地將配置和密碼傳遞給 Envoy 代理來連接到網格。雖然嚴格來說,代理仍然是控制平面的一部分,但它是在每個 Pod 的基礎上執行的。我們進一步簡化了將以前作為 DaemonSet 執行的每個節點功能整合到每個 Pod 代理中的方法。

專家的額外資訊

在某些情況下,您可能仍然希望獨立運行 Istio 組件,或替換某些組件。

某些使用者可能希望在網格外部使用憑證授權單位 (CA),我們有 關於如何執行此操作的文件。如果您使用不同的工具執行憑證佈建,我們可以改用該工具,而不是內建的 CA。

展望未來

istiod 的核心只是一種封裝和最佳化變更。它建立在與單獨組件相同的程式碼和 API 契約之上,並且仍然在我們全面的測試套件的涵蓋範圍內。這讓我們有信心將其設定為 Istio 1.5 中的預設值。該服務現在稱為 istiod - 您將看到一個 istio-pilot,因為升級過程完成了現有代理。

雖然轉向 istiod 看起來像是個很大的變更,並且對於管理維護網格的人來說是一個巨大的改進,但它不會使使用 Istio 的日常生活有任何不同。istiod 不會變更任何用於配置網格的 API,因此您現有的流程將保持不變。

此變更是否暗示微服務對於所有工作負載和架構都是錯誤的?當然不是。它們是工具箱中的一個工具,並且當它們反映在您的組織現實中時,它們的效果最佳。相反,此變更顯示該專案願意根據使用者回饋進行變更,並持續關注為所有使用者簡化。微服務必須調整到適當的大小,我們相信我們已經找到了 Istio 的適當大小。

分享此文章