BumbleBee - et verktøysett for å forenkle opprettelsen og distribusjonen av eBPF-programmer

Solo.io, et selskap som utvikler produkter for å kjøre skysystemer, mikrotjenester, isolerte beholdere og serverløs databehandling, har publisert BumbleBee, et åpen kildekodeverktøy som tar sikte på å forenkle klargjøring, distribusjon og lansering av eBPF-programmer som kjører i en spesiell virtuell maskin inne i Linux-kjernen og tillate behandling av nettverksoperasjoner, kontrollere tilgang og overvåke systemer. Koden er skrevet i Go og distribuert under Apache 2.0-lisensen.

BumbleBee gjør det mulig å pakke et eBPF-program som et containerbilde i OCI-formatet (Open Container Initiative), som kan kjøres på ethvert system uten rekompilering og bruk av tilleggskomponenter i brukerrommet. Interaksjon med eBPF-koden i kjernen, inkludert behandling av data som kommer fra eBPF-behandleren, overtas av BumbleBee, som automatisk eksporterer disse dataene i form av metrikk, histogrammer eller logger, som kan nås for eksempel ved å bruke krøllverktøy. Den foreslåtte tilnærmingen lar utvikleren fokusere på å skrive eBPF-kode og ikke bli distrahert ved å organisere interaksjon med denne koden fra brukerplass, montering og lasting inn i kjernen.

For å administrere eBPF-programmer tilbys et "bee"-verktøy i Docker-stil, som du umiddelbart kan laste ned eBPF-behandleren av interesse fra et eksternt depot og kjøre på det lokale systemet. Verktøysettet lar deg generere et koderammeverk i C for eBPF-behandlere av et valgt emne (foreløpig støttes kun behandlere for nettverks- og filoperasjoner som fanger opp samtaler til nettverksstakken og filsystemer). Basert på det genererte rammeverket kan utvikleren raskt implementere funksjonaliteten han er interessert i.

I motsetning til BCC (BPF Compiler Collection), gjenoppbygger ikke BumbleBee behandlerkoden fullstendig for hver versjon av Linux-kjernen (BCC bruker on-the-fly kompilering med Clang hver gang eBPF-programmet startes). For å løse problemer med portabilitet utvikles CO-RE- og libbpf-verktøyene, som lar deg bygge kode bare én gang og bruke en spesiell universell laster som tilpasser det innlastede programmet til gjeldende kjerne og BTF Type Format. BumbleBee er et tillegg til libbpf og gir tilleggstyper for automatisk tolkning og visning av data som ligger i standard eBPF kartstrukturer RingBuffer og HashMap.

For å bygge det endelige eBPF-programmet og lagre det som et OCI-bilde, kjør bare kommandoen "bee build file_with_code name:version", og for å kjøre kommandoen "bee run name:version". Som standard vil hendelser mottatt fra behandleren sendes ut til terminalvinduet, men om nødvendig kan du hente data ved å bruke curl- eller wget-verktøy til nettverksporten som er bundet til behandleren. Håndtere kan distribueres gjennom OCI-kompatible depoter, for eksempel for å kjøre en ekstern behandler fra ghcr.io-depotet (GitHub Container Registry), du kan kjøre kommandoen "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(bi-versjon)". For å plassere en behandler i depotet, foreslås "bee push"-kommandoen, og for å binde en versjon, "bee tag".

Kilde: opennet.ru

Legg til en kommentar