BumbleBee – sada nástrojů pro zjednodušení tvorby a distribuce programů eBPF

Solo.io, společnost, která vyvíjí produkty pro provoz cloudových systémů, mikroslužeb, izolovaných kontejnerů a bezserverových počítačů, zveřejnila BumbleBee, open source sadu nástrojů zaměřenou na zjednodušení přípravy, distribuce a spouštění programů eBPF běžících na speciálním virtuálním stroji uvnitř Linuxové jádro a umožňující zpracování síťových operací, řízení přístupu a monitorovacích systémů. Kód je napsán v Go a distribuován pod licencí Apache 2.0.

BumbleBee umožňuje zabalit program eBPF jako obrázek kontejneru ve formátu OCI (Open Container Initiative), který lze spustit na jakémkoli systému bez rekompilace a použití dalších komponent v uživatelském prostoru. Interakci s eBPF kódem v jádru, včetně zpracování dat přicházejících z eBPF handleru, přebírá BumbleBee, který tato data automaticky exportuje ve formě metrik, histogramů nebo logů, ke kterým lze přistupovat např. nástroj curl. Navrhovaný přístup umožňuje vývojáři soustředit se na psaní kódu eBPF a nenechat se rozptylovat organizováním interakce s tímto kódem z uživatelského prostoru, sestavování a načítání do jádra.

Pro správu programů eBPF je nabízena utilita „bee“ ve stylu Docker, pomocí které si můžete okamžitě stáhnout požadovaný eBPF handler z externího úložiště a spustit jej na lokálním systému. Toolkit umožňuje generovat kódový framework v C pro obslužné rutiny eBPF vybraného tématu (v současnosti jsou podporovány pouze obslužné rutiny pro síťové a souborové operace, které zachycují volání síťového zásobníku a souborových systémů). Na základě vygenerovaného frameworku může vývojář rychle implementovat funkcionalitu, o kterou má zájem.

Na rozdíl od BCC (BPF Compiler Collection) BumbleBee zcela nepřestavuje kód handleru pro každou verzi linuxového jádra (BCC používá průběžnou kompilaci pomocí Clang při každém spuštění programu eBPF). Pro řešení problémů s přenositelností jsou vyvíjeny nástroje CO-RE a libbpf, které umožňují sestavit kód pouze jednou a použít speciální univerzální zavaděč, který přizpůsobí načtený program aktuálnímu jádru a formátu BTF Type Format. BumbleBee je doplněk k libbpf a poskytuje další typy pro automatickou interpretaci a zobrazení dat umístěných ve standardních mapových strukturách eBPF RingBuffer a HashMap.

Chcete-li sestavit konečný program eBPF a uložit jej jako obrázek OCI, stačí spustit příkaz „bee build file_with_code name:version“ a spustit příkaz „bee run name:version“. Ve výchozím nastavení budou události přijaté z handleru odesílány do okna terminálu, ale v případě potřeby můžete získat data pomocí obslužných programů curl nebo wget na síťový port navázaný na handler. Obslužné rutiny lze distribuovat prostřednictvím repozitářů kompatibilních s OCI, například pro spuštění externí obslužné rutiny z úložiště ghcr.io (GitHub Container Registry) můžete spustit příkaz „bee run ghcr.io/solo-io/bumblebee/tcpconnect: $ (včelí verze)“. Pro umístění handleru do úložiště je navržen příkaz „bee push“ a pro svázání verze „bee tag“.

Zdroj: opennet.ru

Přidat komentář