BumbleBee - 一個簡化 eBPF 程式的創建和分發的工具包

Solo.io 是一家開發用於運行雲端系統、微服務、隔離容器和無伺服器運算的產品的公司,該公司發布了BumbleBee,這是一個開源工具包,旨在簡化在內部特殊虛擬機器中運行的eBPF 程式的準備、分發和啟動Linux 核心並允許處理網路操作、控制存取和監視系統。 該程式碼是用 Go 編寫的,並根據 Apache 2.0 許可證分發。

BumbleBee 使得將 eBPF 程式打包為 OCI(開放容器計劃)格式的容器鏡像成為可能,該鏡像可以在任何系統上運行,無需重新編譯,也無需在用戶空間使用其他組件。 與核心中的 eBPF 程式碼的交互,包括處理來自 eBPF 處理程序的數據,由 BumbleBee 接管,它會自動以指標、直方圖或日誌的形式導出這些數據,例如可以使用捲曲實用程式。 所提出的方法允許開發人員專注於編寫 eBPF 程式碼,而不會因組織與使用者空間、彙編和載入到核心中的程式碼的互動而分心。

為了管理 eBPF 程序,提供了 Docker 風格的“bee”實用程序,使用它您可以立即從外部存儲庫下載感興趣的 eBPF 處理程序並在本地系統上運行它。 此工具包可讓您為選定主題的 eBPF 處理程序產生 C 程式碼框架(目前僅支援攔截對網路堆疊和檔案系統的呼叫的網路和檔案操作的處理程序)。 基於生成的框架,開發人員可以快速實現他感興趣的功能。

與 BCC(BPF 編譯器集合)不同,BumbleBee 不會完全重建每個版本的 Linux 核心的處理程序程式碼(BCC 在每次啟動 eBPF 程式時使用 Clang 進行即時編譯)。 為了解決可移植性問題,正在開發 CO-RE 和 libbpf 工具,可讓您僅建置一次程式碼並使用特殊的通用載入器,使載入的程式適應當前核心和 BTF 類型格式。 BumbleBee 是 libbpf 的附加元件,提供了用於自動解釋和顯示位於標準 eBPF 映射結構 RingBuffer 和 HashMap 中的資料的附加類型。

要建立最終的 eBPF 程式並將其儲存為 OCI 映像,只需執行命令“bee build file_with_code name:version”,然後執行命令“bee run name:version”。 預設情況下,從處理程序接收到的事件將輸出到終端窗口,但如果需要,您可以透過使用curl或wget實用程式到綁定到處理程序的網路連接埠來取得資料。 處理程序可以透過OCI 相容的儲存庫進行分發,例如,要從ghcr.io 儲存庫(GitHub 容器註冊表)運行外部處理程序,您可以執行命令「bee run ghcr.io/solo-io/bumblebee/tcpconnect : $(蜜蜂版本)」。 為了在儲存庫中放置處理程序,建議使用「bee Push」命令,並綁定版本「bee tag」。

來源: opennet.ru

添加評論