Företaget Solo.io, som utvecklar produkter för att sÀkerstÀlla drift av molnsystem, mikrotjÀnster, isolerade containrar och serverlösa berÀkningar, har publicerat ett öppet verktyg som heter BumbleBee, vilket syftar till att förenkla förberedelse, distribution och körning av eBPF-program som körs i en speciell virtuell maskin inuti Linux-kÀrnan och möjliggör hantering av nÀtverksoperationer, Ätkomstkontroll och systemövervakning. Koden Àr skriven i Go och distribueras under Apache 2.0-licensen.
BumbleBee ger möjlighet att packa ett eBPF-program som en containerbild i OCI-format (Open Container Initiative), som kan köras pÄ vilka system som helst utan omkompilering och utan anvÀndning av ytterligare komponenter i anvÀndarutrymmet. Interaktionen med eBPF-koden i kÀrnan, inklusive bearbetning av inkommande data frÄn eBPF-hanteraren, hanteras av BumbleBee, som automatiskt exporterar dessa data som mÀtvÀrden, histogram eller loggar, som kan nÄs till exempel via verktyget curl. Den föreslagna metoden gör det möjligt för utvecklaren att fokusera pÄ att skriva eBPF-kod utan att distraheras av att organisera interaktionen med denna kod frÄn anvÀndarutrymmet, samt att kompilera och ladda in den i kÀrnan.
För att hantera eBPF-program erbjuds ett Docker-liknande verktyg som heter "bee", vilket gör det möjligt att omedelbart ladda eBPF-hanteraren av intresse frÄn ett externt repository och köra den pÄ det lokala systemet. Verktyget gör det möjligt att generera ett kodramverk i C för eBPF-hanterare inom det valda Àmnet (för nÀrvarande stöds endast hanterare för nÀtverks- och filoperationer, som fÄngar anrop till nÀtverksstacken och filsystem). Baserat pÄ det genererade ramverket kan utvecklaren snabbt implementera önskad funktionalitet.
Till skillnad frÄn BCC (BPF Compiler Collection) genomförs ingen fullstÀndig omkompilering av hanterarkoden för varje version av Linux-kÀrnan i BumbleBee (BCC anvÀnder just-in-time-kompilering med Clang vid varje körning av eBPF-programmet). För att lösa kompatibilitetsproblem utvecklas verktyg som CO-RE och libbpf, vilket möjliggör att koden kompilieras endast en gÄng och anvÀnda en speciell universell laddare som anpassar det laddade programmet till den aktuella kÀrnan och typerna av BTF (BPF Type Format). BumbleBee Àr ett lager ovanpÄ libbpf och tillhandahÄller ytterligare typer för automatisk tolkning och visning av data som lagras i de standard eBPF map-strukturerna RingBuffer och HashMap.
För att kompilera det slutliga eBPF-programmet och spara det som en OCI-bild rĂ€cker det att köra kommandot «bee build fil_med_kod namn:version», och för att köra det kommandot «bee run namn:version». Som standard kommer hĂ€ndelser som tas emot frĂ„n hanteraren att skrivas ut i terminalfönstret, men vid behov kan data fĂ„s genom att anvĂ€nda verktyg som curl eller wget för att nĂ„ den nĂ€tverksport som Ă€r kopplad till hanteraren. Hanterare kan distribueras via OCI-kompatibla register, till exempel för att köra en extern hanterare frĂ„n registret ghcr.io (GitHub Container Registry) kan kommandot «bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)» utföras. För att placera en hanterare i registret rekommenderas kommandot «bee push», och för att knyta till en version â «bee tag».
KĂ€lla: opennet.ru
