BumbleBee — un instrument pentru simplificarea creării și distribuției de programe eBPF

Compania Solo.io, care dezvoltă produse pentru funcționarea sistemelor cloud, microserviciilor, containerelor izolate și calculului serverless, a publicat un toolkit deschis numit BumbleBee, destinat simplificării pregătirii, distribuirii și lansării programelor eBPF, care sunt executate într-o mașină virtuală specială din interiorul nucleului Linux și permit procesarea operațiunilor de rețea, controlul accesului și monitorizarea funcționării sistemelor. Codul este scris în limbajul Go și este distribuit sub licența Apache 2.0.

BumbleBee permite ambalarea programului eBPF sub forma unei imagini de container în format OCI (Open Container Initiative), care poate fi rulată pe orice sistem fără recompilare și utilizarea componentelor suplimentare în spațiul utilizatorului. Interacțiunea cu codul eBPF din nucleu, inclusiv procesarea datelor primite de la handlerul eBPF, este gestionată de BumbleBee, care exportă automat aceste date sub formă de metrici, histograme sau loguri, la care se poate accesa, de exemplu, folosind utilitarul curl. Abordarea propusă permite dezvoltatorului să se concentreze pe scrierea codului eBPF și să nu fie distras de organizarea interacțiunii cu acest cod din spațiul utilizatorului, compilarea și încărcarea în nucleu.

Pentru gestionarea programelor eBPF, este propus un utilitar în stil Docker numit „bee”, cu ajutorul căruia se poate încărca imediat handlerul eBPF dorit dintr-un repository extern și se poate lansa pe sistemul local. Toolkit-ul permite generarea unui schelet de cod în limbajul C pentru handlerii eBPF de tematică aleasă (în prezent, sunt suportate doar handleri pentru operațiunile de rețea și fișiere, care interceptă apelurile din stiva de rețea și sistemele de fișiere). Pe baza scheletului generat, dezvoltatorul poate implementa rapid funcționalitatea dorită.

Spre diferență de BCC (BPF Compiler Collection), BumbleBee nu efectuează recompilarea completă a codului handler-ului pentru fiecare versiune a nucleului Linux (BCC folosește compilarea în timp real cu Clang la fiecare rulare a programului eBPF). Pentru a rezolva problemele de portabilitate, se dezvoltă instrumentele CO-RE și libbpf, care permit compilarea codului o singură dată și utilizarea unui încărcător universal special adaptat pentru nucleul curent și tipurile BTF (BPF Type Format). BumbleBee este un strat deasupra libbpf și oferă tipuri suplimentare pentru interpretarea și afșarea automată a datelor plasate în structuri standard eBPF map, RingBuffer și HashMap.

Pentru a construi programul final eBPF și a-l salva ca imagine OCI, este suficient să executați comanda „bee build fișier_cu_cod nume:versiune”, iar pentru a rula comanda „bee run nume:versiune”. În mod implicit, evenimentele obținute de la handler vor fi afișate în fereastra terminalului, dar, dacă este necesar, puteți obține datele accesând utilitarele curl sau wget la portul de rețea legat de handler. Handlerele pot fi distribuite prin depozite compatibile OCI, de exemplu, pentru a rula un handler extern din depozitul ghcr.io (GitHub Container Registry), se poate executa comanda „bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)”. Pentru a plasa un handler în depozit, se oferă comanda „bee push”, iar pentru a lega versiunea - „bee tag”.

Sursa: opennet.ro

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster