BumbleBee — værktøj til forenkling af oprettelse og distribution af eBPF-programmer

Virksomheden Solo.io, der udvikler produkter til drift af cloud-systemer, mikroservices, isolerede containere og serverløse beregninger, har offentliggjort det åbne værktøj BumbleBee, der sigter mod at forenkle forberedelse, distribution og kørsel af eBPF-programmer, der udføres i en speciel virtuel maskine inden i Linux-kernen og gør det muligt at behandle netværksoperationer, kontrollere adgang og overvåge systemfunktioner. Koden er skrevet i Go og distribueres under Apache 2.0-licensen.

BumbleBee giver mulighed for at pakke eBPF-programmet som et OCI (Open Container Initiative) containerbillede, som kan køres på enhver system uden recompilation og brug af ekstra komponenter i brugerområdet. Interaktionen med eBPF-koden i kernen, inklusive behandlingen af indgående data fra eBPF-behandlerne, varetages af BumbleBee, som automatisk eksporterer disse data i form af metrikker, histogrammer eller logs, som kan tilgås for eksempel ved hjælp af curl-værktøjet. Den foreslåede tilgang gør det muligt for udvikleren at fokusere på at skrive eBPF-kode uden at blive distraheret af at organisere interaktionen med denne kode fra brugerområdet, kompiliering og indlæsning i kernen.

Til at administrere eBPF-programmer tilbydes værktøjet 'bee', som fungerer i stil med Docker, og som giver mulighed for straks at indlæse den ønskede eBPF-behandler fra et eksternt repository og køre den på det lokale system. Værktøjet gør det muligt at generere en kode skabelon i C til eBPF-behandlere af valgt tema (i øjeblikket understøttes kun behandlere til netværks- og filoperationer, der interceptorer kald til netværksstakken og filsystemer). Baseret på den dannede skabelon kan udvikleren hurtigt implementere den ønskede funktionalitet.

I modsætning til BCC (BPF Compiler Collection) kræver BumbleBee ikke en fuldstændig genbygning af behandlerkoden for hver version af Linux-kernen (BCC bruger runtime-kompilation ved hjælp af Clang ved hver kørsel af eBPF-programmet). For at løse problemer med portabilitet udvikles værktøjer som CO-RE og libbpf, som gør det muligt at kompilere koden én gang og bruge en speciel universel loader til at tilpasse det indlæste program til den nuværende kerne og BTF-typer (BPF Type Format). BumbleBee er et lag ovenpå libbpf og tilbyder ekstra typer til automatisk fortolkning og visning af data, der er placeret i de standard eBPF map-strukturer RingBuffer og HashMap.

For at bygge den endelige eBPF-program og gemme det som et OCI-billede, er det tilstrækkeligt at udføre kommandoen "bee build fil_med_kode navn:version", og for at køre det, skal man bruge kommandoen "bee run navn:version". Som standard vil de events, der modtages fra behandleren, blive udskrevet i terminalvinduet, men om nødvendigt kan man få data ved at henvende sig til de netværksporte, der er knyttet til behandleren, ved hjælp af værktøjer som curl eller wget. Behandlere kan distribueres gennem OCI-kompatible repositories, for eksempel for at køre en ekstern behandler fra repository ghcr.io (GitHub Container Registry) kan man udføre kommandoen "bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)". For at placere en behandler i et repository, foreslås kommandoen "bee push", og for at knytte en version – "bee tag".

Kilde: opennet.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster