A Solo.io vállalat, amely felhőalapú rendszerek, mikroszolgáltatások, izolált konténerek és serverless számítástechnika számára fejleszt termékeket, közzétette a BumbleBee nyílt eszközkészletét, amelynek célja az eBPF programok előkészítésének, terjesztésének és futtatásának egyszerűsítése. Ezek a programok egy speciális virtuális gépben futnak a Linux kernelén, és lehetővé teszik a hálózati műveletek feldolgozását, a hozzáférés ellenőrzését és a rendszerek működésének nyomon követését. A kód Go nyelven készült, és Apache 2.0 licenc alatt terjesztik.
A BumbleBee lehetővé teszi az eBPF programok OCI (Open Container Initiative) formátumban történő konténerképként való becsomagolását, amelyeket bármilyen rendszeren futtathatunk újra-kompilálás és további felhasználói komponensek nélkül. Az eBPF kód kernelben való interakcióját, beleértve az eBPF kezelőkből érkező adatok feldolgozását, a BumbleBee végzi, amely automatikusan exportálja ezeket az adatokat metrikák, hisztogramok vagy naplók formájában, amelyeket például a curl segédprogram segítségével érhetünk el. Az ajánlott megközelítés lehetővé teszi a fejlesztők számára, hogy a figyelmüket az eBPF kód írására összpontosítsák anélkül, hogy el kellene vonatkozniuk az ezzel a kóddal történő felhasználói interakció megszervezésétől, a kernelbe való megépítésétől és betöltésétől.
Az eBPF programok kezelésére egy Docker-stílusú "bee" nevű eszközt ajánlanak, amellyel azonnal betölthetjük az érdeklődő eBPF kezelőt egy külső adattárolóból, és elindíthatjuk a helyi rendszeren. Az eszközkészlet lehetővé teszi a C nyelvű eBPF kezelők szkeleton kódjának generálását a választott témában (jelenleg csak a hálózati és fájlműveletek kezelői támogatottak, amelyek a hálózati stack és fájlrendszerek hívásait megszakítják). A generált szkeleton alapján a fejlesztő gyorsan megvalósíthatja az általa kívánt funkciót.
A BCC (BPF Compiler Collection) különbözik attól, hogy a BumbleBee nem hajt végre teljes újrakonstruálást a feldolgozó kódjára minden egyes Linux kernel verzióhoz (a BCC a Clang segítségével végzi el a futásidejű fordítást minden eBPF program indításakor). A hordozhatóság problémáinak megoldására a CO-RE és a libbpf eszközkészletek fejlődnek, amelyek lehetővé teszik a kód egyszeri összeállítását, és egy speciális univerzális betöltőt alkalmaznak, amely a betöltendő programot az aktuális kernelhez és a BTF (BPF Type Format) típusaihoz igazítja. A BumbleBee a libbpf fölött helyezkedik el, és további típusokat biztosít az adatok automatikus értelmezéséhez és megjelenítéséhez, amelyek a eBPF map-struktúrák, például RingBuffer és HashMap szokásos formáiban találhatók.
Az eBPF program végleges összeállításához és OCI-kép formájában való mentéséhez elegendő a "bee build fájl_a_kóddal név:verzió" parancs kiadása, a futtatáshoz pedig a "bee run név:verzió" parancs. Alapértelmezés szerint a feldolgozó eseményekből származó kimenetek a terminál ablakába kerülnek, de szükség esetén az adatok elérhetők a curl vagy wget segédprogramokkal, amelyek a feldolgozóhoz csatlakoztatott hálózati portot célozzák. A feldolgozók terjeszthetők OCI-kompatibilis tárolókon keresztül; például egy külső feldolgozó futtatásához a ghcr.io (GitHub Container Registry) tárolóból a következő parancs használható: "bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)". A feldolgozó tárolóba helyezésére a "bee push" parancs javasolt, míg a verziók hozzárendelésére a "bee tag" parancs.
Forrás: opennet.ru
