擴展和改進 WebAssemblyHub,將 WebAssembly 的強大功能帶給 Envoy 和 Istio
Solo.io 提供的 Istio 社群合作夥伴 Wasm 工具。
隨著各組織採用基於 Envoy 的基礎架構(如 Istio)來協助解決微服務通訊方面的挑戰,他們不可避免地發現需要自訂基礎架構的某些部分,以符合其組織的限制。WebAssembly (Wasm) 已成為平台擴展的安全、可靠和動態環境。
在最近Istio 1.5 的發佈公告中,Istio 專案為將 WebAssembly 引入流行的 Envoy 代理奠定了基礎。Solo.io 正與 Google 和 Istio 社群合作,以簡化為 Envoy 和 Istio 建立、共享和部署 WebAssembly 擴展的整體體驗。不久之前,Google 和其他公司為容器奠定了基礎,而 Docker 建立了一個出色的使用者體驗,使其可被使用。同樣地,此項工作透過為 Istio 上的 WebAssembly 建立最佳使用者體驗,使 Wasm 可被使用。
早在 2019 年 12 月,Solo.io 開始努力透過發佈 WebAssembly Hub 來為 WebAssembly 提供出色的開發人員體驗。WebAssembly Hub 允許開發人員非常快速地在 C++ 中啟動新的 WebAssembly 專案(我們正在擴展此語言選項,請參閱下文),在 Docker 中使用 Bazel 進行建置,並將其推送到符合 OCI 標準的登錄檔。從那裡開始,操作員必須提取模組,並自行設定 Envoy 代理以從磁碟載入它。在Gloo(基於 Envoy 建置的 API 閘道)中的 Beta 支援允許您宣告式和動態地載入模組,Solo.io 團隊希望將相同的輕鬆安全體驗帶給其他基於 Envoy 的框架,例如 Istio。
人們對這個領域的創新產生了濃厚的興趣,Solo.io 團隊一直努力提升 WebAssembly Hub 的功能及其支援的工作流程。與 Istio 1.5 結合使用,Solo.io 很興奮地宣佈 WebAssembly Hub 的新功能增強,這些增強功能提升了 WebAssembly 與 Envoy 在生產中的可行性、改善了開發人員體驗,並簡化了在 Istio 中使用 Wasm 與 Envoy 的方式。
朝生產方向發展
Envoy 社群正在努力將 Wasm 支援引入上游專案(目前它位於一個正在開發的分支上),而 Istio 宣告 Wasm 支援為 Alpha 功能。在Gloo 1.0 中,我們也宣佈了對 Wasm 的早期、非生產支援。什麼是 Gloo?Gloo 是一個現代化的 API 閘道和 Ingress 控制器(基於 Envoy Proxy 建置),支援將傳入流量路由和保護到舊有單體、微服務/Kubernetes 和無伺服器函式。開發和運營團隊能夠塑造和控制從外部最終使用者/客戶端到後端應用程式服務的流量模式。Gloo 是一個 Kubernetes 和 Istio 原生的 Ingress 閘道。
儘管它在每個單獨的專案中仍在成熟,但我們作為一個社群,可以做一些事情來改善生產支援的基礎。
第一個領域是標準化 Envoy 的 WebAssembly 擴展的外觀。Solo.io、Google 和 Istio 社群已定義了一個開放規格,用於將 WebAssembly 模組捆綁和分發為 OCI 映像。此規格為分發任何類型的 Wasm 模組(包括 Envoy 擴展)提供了一個強大的模型。
這對社群開放 - 加入努力
下一個領域是改善將 Wasm 擴展部署到生產環境中運行的基於 Envoy 的框架中的體驗。在 Kubernetes 生態系統中,使用宣告式基於 CRD 的設定來管理叢集設定被認為是生產中的最佳實務。新的 WebAssembly Hub Operator 新增了一個單一、宣告式的 CRD,它可以自動將 Wasm 過濾器部署和設定到 Kubernetes 叢集中運行的 Envoy 代理。此操作員啟用 GitOps 工作流程和叢集自動化來管理 Wasm 過濾器,而無需人工干預或命令式工作流程。我們將在即將發佈的部落格文章中提供有關操作員的更多資訊。
最後,Wasm 擴展的開發人員與部署它們的團隊之間的互動需要某種基於角色的存取、組織管理以及共享、發現和使用這些擴展的功能。WebAssembly Hub 新增了團隊管理功能,例如權限、組織、使用者管理、共享等等。
改善開發人員體驗
由於開發人員希望鎖定更多語言和執行時間,因此必須保持體驗盡可能簡單和高效。多語言支援和執行時間 ABI(應用程式二進位介面)目標應在工具中自動處理。
Wasm 的優點之一是能夠以多種語言編寫模組。Solo.io 和 Google 之間的合作為以 C++、Rust 和 AssemblyScript 編寫的 Envoy 過濾器提供開箱即用支援。我們將繼續新增對更多語言的支援。
Wasm 擴展使用部署它們的 Envoy 代理中的應用程式二進位介面 (ABI)。WebAssembly Hub 在 Envoy、Istio 和 Gloo 之間提供強大的 ABI 版本控制保證,以防止不可預測的行為和錯誤。您只需要擔心編寫擴展程式碼即可。
最後,與 Docker 類似,WebAssembly Hub 將 Wasm 擴展儲存和分發為 OCI 映像。這使得推送、提取和運行擴展就像 Docker 容器一樣容易。Wasm 擴展映像具有版本控制和加密安全性,使其可以在本機安全地運行擴展,就像在生產環境中一樣。這允許您在下載和部署映像時建置和推送,以及信任來源。
WebAssembly Hub 與 Istio
WebAssembly Hub 現在完全自動化了將 Wasm 擴展部署到 Istio(以及其他基於 Envoy 的框架,例如 Gloo API 閘道)安裝在 Kubernetes 中的流程。透過此部署功能,WebAssembly Hub 使操作員或最終使用者不必手動設定 Istio 服務網格中的 Envoy 代理來使用其 WebAssembly 模組。
請觀看以下影片,了解開始使用 WebAssembly 和 Istio 是多麼容易
開始使用
我們希望 WebAssembly Hub 將成為社群共享、發現和分發 Wasm 擴展的場所。透過提供出色的使用者體驗,我們希望使開發、安裝和運行 Wasm 變得更容易且更有回報。請加入我們的 WebAssembly Hub,分享您的擴展和想法,並參加即將舉行的網路研討會。