BumbleBee - alat za pojednostavljenje kreiranja i distribucije eBPF programa

Solo.io, kompanija koja razvija proizvode za pokretanje cloud sistema, mikroservisa, izolovanih kontejnera i računarstva bez servera, objavila je BumbleBee, komplet alata otvorenog koda koji ima za cilj da pojednostavi pripremu, distribuciju i pokretanje eBPF programa koji se pokreću na posebnoj virtuelnoj mašini unutar Linux kernel i omogućavaju obradu mrežnih operacija, kontrolu pristupa i nadzor sistema. Kod je napisan u Go i distribuiran pod licencom Apache 2.0.

BumbleBee omogućava pakiranje eBPF programa kao slike kontejnera u OCI (Open Container Initiative) formatu, koji se može pokrenuti na bilo kojem sistemu bez rekompilacije i upotrebe dodatnih komponenti u korisničkom prostoru. Interakciju sa eBPF kodom u jezgru, uključujući obradu podataka koji dolaze iz eBPF rukovaoca, preuzima BumbleBee, koji automatski izvozi ove podatke u obliku metrike, histograma ili dnevnika, kojima se može pristupiti, na primjer, pomoću curl utility. Predloženi pristup omogućava programeru da se fokusira na pisanje eBPF koda i da ga ne ometa organizovanje interakcije sa ovim kodom iz korisničkog prostora, sklapanja i učitavanja u kernel.

Za upravljanje eBPF programima, nudi se uslužni program „bee“ u stilu Docker-a, s kojim možete odmah preuzeti eBPF rukovatelj od interesa iz vanjskog spremišta i pokrenuti ga na lokalnom sistemu. Komplet alata vam omogućava da generišete okvir koda u C-u za eBPF rukovaoce odabrane teme (trenutno su podržani samo rukovaoci za mrežne operacije i operacije datoteka koje presreću pozive mrežnom stogu i sistemima datoteka). Na osnovu generisanog okvira, programer može brzo implementirati funkcionalnost koja ga zanima.

Za razliku od BCC-a (BPF Compiler Collection), BumbleBee ne obnavlja u potpunosti kod za rukovanje za svaku verziju Linux kernela (BCC koristi kompilaciju u hodu koristeći Clang svaki put kada se pokrene eBPF program). Kako bi se riješili problemi prenosivosti, razvijaju se alati CO-RE i libbpf, koji vam omogućavaju da napravite kod samo jednom i koristite poseban univerzalni loader koji prilagođava učitani program trenutnom kernelu i formatu BTF tipa. BumbleBee je dodatak za libbpf i pruža dodatne tipove za automatsku interpretaciju i prikaz podataka koji se nalaze u standardnim eBPF strukturama mapa RingBuffer i HashMap.

Da biste napravili konačni eBPF program i spremili ga kao OCI sliku, samo pokrenite naredbu “bee build file_with_code name:version” i da pokrenete naredbu “bee run name:version”. Prema zadanim postavkama, događaji primljeni od rukovatelja bit će izlazni u prozor terminala, ali ako je potrebno, možete dobiti podatke korištenjem curl ili wget uslužnih programa na mrežni port vezan za rukovalac. Rukovatelji se mogu distribuirati kroz OCI kompatibilna spremišta, na primjer, za pokretanje vanjskog rukovatelja iz ghcr.io spremišta (GitHub Container Registry), možete pokrenuti naredbu „bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(bee verzija)”. Za postavljanje rukovatelja u spremište, predložena je komanda “bee push”, a za povezivanje verzije, “bee tag”.

izvor: opennet.ru

Dodajte komentar