BumbleBee - en verktygslåda för att förenkla skapandet och distributionen av eBPF-program

Solo.io, ett företag som utvecklar produkter för att köra molnsystem, mikrotjänster, isolerade behållare och serverlös datoranvändning, har publicerat BumbleBee, en verktygslåda med öppen källkod som syftar till att förenkla förberedelse, distribution och lansering av eBPF-program som körs i en speciell virtuell maskin inuti Linux-kärnan och tillåta bearbetning av nätverksoperationer, kontrollera åtkomst och övervaka system. Koden är skriven i Go och distribueras under Apache 2.0-licensen.

BumbleBee gör det möjligt att paketera ett eBPF-program som en containerbild i formatet OCI (Open Container Initiative), som kan köras på vilket system som helst utan omkompilering och användning av ytterligare komponenter i användarutrymmet. Interaktion med eBPF-koden i kärnan, inklusive bearbetning av data som kommer från eBPF-hanteraren, tas över av BumbleBee, som automatiskt exporterar denna data i form av mätvärden, histogram eller loggar, som kan nås till exempel med hjälp av lockverktyg. Det föreslagna tillvägagångssättet tillåter utvecklaren att fokusera på att skriva eBPF-kod och inte bli distraherad av att organisera interaktion med denna kod från användarutrymme, montering och laddning i kärnan.

För att hantera eBPF-program erbjuds ett "bee"-verktyg i Docker-stil, med vilket du omedelbart kan ladda ner eBPF-hanteraren av intresse från ett externt arkiv och köra det på det lokala systemet. Verktygslådan låter dig generera ett kodramverk i C för eBPF-hanterare av ett valt ämne (för närvarande stöds endast hanterare för nätverks- och filoperationer som avlyssnar anrop till nätverksstacken och filsystem). Utifrån det genererade ramverket kan utvecklaren snabbt implementera den funktionalitet han är intresserad av.

Till skillnad från BCC (BPF Compiler Collection), bygger BumbleBee inte om hanterarkoden helt för varje version av Linux-kärnan (BCC använder kompilering direkt med Clang varje gång eBPF-programmet startas). För att lösa portabilitetsproblem utvecklas verktygen CO-RE och libbpf, vilket gör att du bara kan bygga kod en gång och använda en speciell universell laddare som anpassar det laddade programmet till den aktuella kärnan och BTF-typformatet. BumbleBee är ett tillägg till libbpf och tillhandahåller ytterligare typer för automatisk tolkning och visning av data som finns i standard eBPF kartstrukturer RingBuffer och HashMap.

För att bygga det slutliga eBPF-programmet och spara det som en OCI-bild, kör bara kommandot "bee build file_with_code name:version" och för att köra kommandot "bee run name:version". Som standard kommer händelser som tas emot från hanteraren att matas ut till terminalfönstret, men vid behov kan du få data genom att använda curl- eller wget-verktyg till nätverksporten som är bunden till hanteraren. Hanterare kan distribueras genom OCI-kompatibla arkiv, till exempel för att köra en extern hanterare från ghcr.io-arkivet (GitHub Container Registry), du kan köra kommandot "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(bee version)”. För att placera en hanterare i förvaret föreslås kommandot "bee push" och för att binda en version, "bee tag".

Källa: opennet.ru

Lägg en kommentar