Solo.io, mis arendab pilvesüsteemide, mikroteenuste, eraldatud konteinerite ja serverivabade arvutuste tööriistu, avaldas avatud tööriistakomplekti BumbleBee, mille eesmärk on lihtsustada eBPF-programmide ettevalmistamist, levitamist ja käivitamist, mis toimivad spetsiaalses virtuaalmasinas Linuxi kernelis ning võimaldavad hallata võrguoperatsioone, kontrollida pääsu ja jälgida süsteemide tööprotsesse. Kood on kirjutatud Go keeles ja levitatakse Apache 2.0 litsentsi alusel.
BumbleBee võimaldab eBPF-programmi pakendada OCI (Open Container Initiative) formaadis konteineri kujul, mida saab kasutada igas süsteemis ilma ümberkompileerimise ja lisakomponentide vajaduseta kasutajaruumi. Interaktsiooni eBPF-koodiga kernelis, sealhulgas eBPF-käsitlejatest pärinevate andmete töötlemise, haldab BumbleBee, mis automaatselt ekspordib need andmed meetrikate, histogrammide või logide kujul, millele saab ligipääsu näiteks curl utiliidi abil. Pakutud lähenemine võimaldab arendajal keskenduda eBPF-koodi kirjutamisele, häirimata kasutajaruumi koodeksi ja selle koodi interaktsiooni korraldamise, kogumise ja kerneli laadimisega.
eBPF-programmide haldamiseks on pakutud Docker-tyylist utiliiti 'bee', millega saab kohe alla laadida huvipakkuva eBPF-käsitleja välisest hoidlast ja käivitada kohalikes süsteemides. Tööriistakomplekt võimaldab genereerida C keeles eBPF-käsitlejate valitud teemade jaoks koodi karkassi (praegu toetatakse ainult võrguliikluse ja failisüsteemide toimingute käsitlejaid, mis püüavad kinni võrgustikku ja failisüsteemide väljakutseid). Põhjal loodud karkassist saab arendaja kiiresti luua oma soovitud funktsionaalsuse.
Erinevalt BCC-st (BPF Compiler Collection) ei toimu BumbleBees iga Linuxi tuuma versiooni jaoks töötleja koodi täielikku uuesti kompileerimist (BCC kasutab iga eBPF-programmi käivitamisel Clangi abil reaalajas kompileerimist). Ülekantavuse probleemide lahendamiseks arendatakse CO-RE ja libbpf tööriistu, mis võimaldavad koodi kompileerida ainult üks kord ja kasutada spetsiaalset universaalset laadijat, mis kohandab laaditavat programmi vastavalt praegusele tuumale ja BTF (BPF Type Format) tüüpidele. BumbleBee on libbpf-i peal oleva tarkvara kiht, mis pakub täiendavaid tüüpe andmete automaatseks tõlgendamiseks ja kuvamiseks, mis on paigutatud tavalistesse eBPF map-struktuuridesse nagu RingBuffer ja HashMap.
Kokkuvõtlikku eBPF-programmi koostamiseks ja OCI-pildina salvestamiseks piisab, kui käivitada käsk „bee build fail_koodiga nimi:versioon”, ja käivitamiseks käsk „bee run nimi:versioon”. Vaikimisi saadavad töötlejalt saadud sündmused terminaliaknasse, kuid vajadusel saab andmeid hankida, kui suunata curl või wget tööriistad töötlejaga seotud võrgupordile. Töötlejaid saab levitada OCI-ühtsete registrite kaudu, näiteks välise töötleja käivitamiseks registrist ghcr.io (GitHub Container Registry) võib käitada käsku „bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)”. Töötleja deponeerimiseks registrisse on ette nähtud käsk „bee push”, ja versiooni sidumiseks — „bee tag”.
Allikas: opennet.ru
