BumbleBee - 'n gereedskapstel om die skepping en verspreiding van eBPF-programme te vereenvoudig

Solo.io, 'n maatskappy wat produkte ontwikkel vir die bestuur van wolkstelsels, mikrodienste, geïsoleerde houers en bedienerlose rekenaars, het BumbleBee gepubliseer, 'n oopbrongereedskapstel wat daarop gemik is om die voorbereiding, verspreiding en bekendstelling van eBPF-programme wat in 'n spesiale virtuele masjien binne hardloop te vereenvoudig. die Linux-kern en laat verwerking van netwerkbedrywighede toe, beheer toegang en monitor stelsels. Die kode is in Go geskryf en onder die Apache 2.0-lisensie versprei.

BumbleBee maak dit moontlik om 'n eBPF-program as 'n houerbeeld in die OCI (Open Container Initiative)-formaat te verpak, wat op enige stelsel uitgevoer kan word sonder hersamestelling en die gebruik van bykomende komponente in gebruikersruimte. Interaksie met die eBPF-kode in die kern, insluitend die verwerking van data wat van die eBPF-hanteerder af kom, word oorgeneem deur BumbleBee, wat hierdie data outomaties uitvoer in die vorm van metrieke, histogramme of logs, wat verkry kan word, byvoorbeeld deur die gebruik van die krul nut. Die voorgestelde benadering laat die ontwikkelaar toe om op die skryf van eBPF-kode te fokus en nie afgelei te word deur interaksie met hierdie kode te organiseer vanaf gebruikersspasie, samestelling en laai in die kern nie.

Om eBPF-programme te bestuur, word 'n Docker-styl "by"-hulpmiddel aangebied, waarmee u die eBPF-hanteerder van belang onmiddellik vanaf 'n eksterne bewaarplek kan aflaai en dit op die plaaslike stelsel kan laat loop. Die gereedskapstel laat jou toe om 'n koderaamwerk in C vir eBPF-hanteerders van 'n geselekteerde onderwerp te genereer (tans word slegs hanteerders vir netwerk- en lêerbewerkings wat oproepe na die netwerkstapel en lêerstelsels onderskep ondersteun). Op grond van die gegenereerde raamwerk kan die ontwikkelaar die funksionaliteit waarin hy belangstel vinnig implementeer.

Anders as BCC (BPF Compiler Collection), herbou BumbleBee nie die hanteerderkode heeltemal vir elke weergawe van die Linux-kern nie (BCC gebruik on-the-fly samestelling deur Clang te gebruik elke keer as die eBPF-program geloods word). Om probleme met oordraagbaarheid op te los, word die CO-RE- en libbpf-nutsgoed ontwikkel, wat jou toelaat om kode net een keer te bou en 'n spesiale universele laaier te gebruik wat die gelaaide program aanpas by die huidige kern en BTF-tipe-formaat. BumbleBee is 'n byvoeging tot libbpf en bied bykomende tipes vir outomatiese interpretasie en vertoon van data wat in die standaard eBPF-kaartstrukture RingBuffer en HashMap geleë is.

Om die finale eBPF-program te bou en dit as 'n OCI-beeld te stoor, voer net die opdrag "bee build file_with_code name:version" uit en om die opdrag "bee run name:version" uit te voer. Gebeurtenisse wat vanaf die hanteerder ontvang word, sal by verstek na die terminale venster uitgestuur word, maar indien nodig, kan jy data verkry deur krul- of wget-nutsprogramme te gebruik na die netwerkpoort wat aan die hanteerder gebind is. Hanteerders kan deur OCI-versoenbare bewaarplekke versprei word, byvoorbeeld om 'n eksterne hanteerder vanaf die ghcr.io-bewaarplek (GitHub Container Registry) te laat loop, jy kan die opdrag "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(by weergawe)”. Om 'n hanteerder in die bewaarplek te plaas, word die "bee push"-opdrag voorgestel, en om 'n weergawe te bind, "bee tag".

Bron: opennet.ru

Voeg 'n opmerking