Ettevõtte Solo.io, mis arendab tooteid pilvesüsteemide, mikroteenuste, isoleeritud konteinerite ja serverivabade arvutuste toetamiseks, avaldas avatud tööriistakomplekti BumbleBee, mille eesmärk on lihtsustada eBPF-programmide ettevalmistamist, jagamist ja käivitamist, mis töötavad spetsiaalses virtuaalses masinas Linuxi tuumas ning võimaldavad hallata võrgutegevusi, kontrollida juurdepääsu ja jälgida süsteemide tööprotsesse. Kood on kirjutatud Go keeles ja levitatakse litsentsi Apache 2.0 all.
BumbleBee võimaldab pakendada eBPF-programmi konteineripildiks OCI (Open Container Initiative) formaadis, mida saab käitada igas süsteemis ilma ümberkompileerimise ja lisakomponente kasutamata kasutajaruumi. BumbleBee hoolitseb eBPF-koodi suhtlemise eest tuumas, sealhulgas eBPF-haldurilt saabuvate andmete töötlemise eest, automaatselt ekspordib need andmed metrikate, histogrammide või logidena, millele saab ligipääsu näiteks utiliidi curl abil. Pakutud lähenemine võimaldab arendajal keskenduda eBPF-koodi kirjutamisele ning mitte muretseda selle koodi suhtlemise korraldamise, tuuma koondamise ja laadimise pärast.
eBPF-programmide haldamiseks on saadaval Docker-stiilis tööriist "bee", millega saab kohe laadida huvipakkuva eBPF-käsitleja välisest hoidlast ja käivitada selle kohalikul süsteemil. Tööriist pakub võimalust genereerida C keeles koodiraamistik valitud teema eBPF-käsitlejate jaoks (hetkel toetatakse ainult võrgu- ja failitegevuste käsitlejat, mis peavad kinni võrgu- ja failisüsteemide kutsungitest). Koostatud raamistiku põhjal saab arendaja kiiresti rakendada soovitud funktsionaalsust.
Erinevalt BCC-st (BPF Compiler Collection) ei toimu BumbleBee-s iga Linuxi tuuma versiooni jaoks töötleva koodi täielikku uuesti kompileerimist (BCC kasutab iga eBPF-programmi käivitamisel Clangiga töötlemise ajal kompileerimist). Üksikasjalikema ülekandmise probleemide lahendamiseks arendatakse CO-RE ja libbpf tööriistu, mis võimaldavad koodi koostada ainult üks kord ja kasutada spetsiaalset universaalset laadijat, mis kohandab laaditud programmi praeguse tuuma ja BTF (BPF Type Format) tüüpide järgi. BumbleBee on libbpf-i pealiskihiks ja pakub täiendavaid tüüpe, et automaatselt tõlgendada ja kuvada andmeid, mis asuvad eBPF map-struktuuride, näiteks RingBuffer ja HashMap, tavastruktuurides.
Kuna kokku panna lõplik eBPF-programm ja salvestada see OCI-pildina, piisab käsu "bee build fail_koodiga nimi:versioon" täitmisest; ja käivitamiseks käsust "bee run nimi:versioon". Vaikimisi kuvatakse sündmuste töötlejatelt saadud väljund terminali aknas, kuid vajadusel saab andmeid kätte, kui pöörduda utiliitide curl või wget abil töötlejaga seotud võrguporti. Töötlejat saab jagada OCI-ühilduvates registrites; näiteks välise töötleja käivitamiseks registrist ghcr.io (GitHub Container Registry) saab täita käsu "bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)". Töötleja asetamist registrisse toetab käsk "bee push", ja versiooni sidumist käsuga "bee tag".
Allikas: opennet.ru
