BumbleBee - in toolkit om de skepping en distribúsje fan eBPF-programma's te ferienfâldigjen

io de Linux kernel en tastean ferwurkjen netwurk operaasjes, kontrôle tagong en monitor systemen. De koade is skreaun yn Go en ferspraat ûnder de Apache 2.0-lisinsje.

BumbleBee makket it mooglik om in eBPF-programma te pakken as in kontenerôfbylding yn it OCI-formaat (Open Container Initiative), dat kin wurde útfierd op elk systeem sûnder opnij kompilaasje en it brûken fan ekstra komponinten yn brûkersromte. Ynteraksje mei de eBPF-koade yn 'e kearn, ynklusyf ferwurking fan gegevens dy't komme fan' e eBPF-hanneler, wurdt oernommen troch BumbleBee, dy't dizze gegevens automatysk eksportearret yn 'e foarm fan metriken, histogrammen of logs, dy't tagonklik wurde kinne, bygelyks mei de curl nut. De foarstelde oanpak lit de ûntwikkelder rjochtsje op it skriuwen fan eBPF-koade en net ôfliede troch it organisearjen fan ynteraksje mei dizze koade fan brûkersromte, gearstalling en laden yn 'e kernel.

Om eBPF-programma's te behearjen, wurdt in Docker-styl "bee" utility oanbean, wêrmei jo de eBPF-hanneler fan belang direkt kinne downloade fan in eksterne repository en it útfiere op it lokale systeem. De toolkit kinne jo generearje in koade ramt yn C foar eBPF handlers fan in selektearre ûnderwerp (op it stuit allinnich handlers foar netwurk en triem operaasjes dy't ûnderskeppe oproppen nei it netwurk stack en triem systemen wurde stipe). Op grûn fan it generearre ramt kin de ûntwikkelder de funksjonaliteit fluch ymplementearje wêryn hy ynteressearre is.

Oars as BCC (BPF Compiler Collection), bout BumbleBee de handlerkoade net folslein op 'e nij foar elke ferzje fan' e Linux-kernel (BCC brûkt on-the-fly kompilaasje mei Clang elke kear as it eBPF-programma wurdt lansearre). Om problemen mei portabiliteit op te lossen, wurde de CO-RE- en libbpf-ark ûntwikkele, wêrtroch jo mar ien kear koade kinne bouwe en in spesjale universele loader brûke dy't it laden programma oanpast oan 'e hjoeddeistige kernel en BTF Type Format. BumbleBee is in tafoeging oan libbpf en leveret ekstra soarten foar automatyske ynterpretaasje en werjefte fan gegevens yn 'e standert eBPF-kaartstruktueren RingBuffer en HashMap.

Om it definitive eBPF-programma te bouwen en it op te slaan as in OCI-ôfbylding, útfiere gewoan it kommando "bee build file_with_code name:version", en om it kommando "bee run name:version" út te fieren. Standert sille eveneminten ûntfongen fan 'e handler wurde útfierd nei it terminalfinster, mar as it nedich is, kinne jo gegevens krije troch curl- of wget-hulpprogramma's te brûken nei de netwurkpoarte bûn oan de handler. Handlers kinne wurde ferspraat fia OCI-kompatible repositories, bygelyks om in eksterne handler út te fieren fan it ghcr.io repository (GitHub Container Registry), kinne jo it kommando útfiere "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(bee ferzje)". Om in handler yn 'e repository te pleatsen, wurdt it kommando "bee push" foarsteld, en om in ferzje te binen, "bee tag".

Boarne: opennet.ru

Add a comment