BumbleBee - isang toolkit upang gawing simple ang paggawa at pamamahagi ng mga programang eBPF

Ang Solo.io, isang kumpanyang gumagawa ng mga produkto para sa pagpapatakbo ng mga cloud system, microservice, isolated container at serverless computing, ay naglathala ng BumbleBee, isang open source toolkit na naglalayong pasimplehin ang paghahanda, pamamahagi at paglulunsad ng mga programang eBPF na tumatakbo sa isang espesyal na virtual machine sa loob. ang Linux kernel at payagan ang pagpoproseso ng mga operasyon ng network, kontrolin ang pag-access at pagsubaybay sa mga system. Ang code ay nakasulat sa Go at ipinamahagi sa ilalim ng lisensya ng Apache 2.0.

Ginagawang posible ng BumbleBee na i-package ang isang eBPF program bilang isang container image sa OCI (Open Container Initiative) na format, na maaaring patakbuhin sa anumang system nang walang recompilation at ang paggamit ng mga karagdagang bahagi sa user space. Ang pakikipag-ugnayan sa eBPF code sa core, kabilang ang pagproseso ng data na nagmumula sa eBPF handler, ay kinuha ng BumbleBee, na awtomatikong nag-e-export ng data na ito sa anyo ng mga sukatan, histogram o log, na maaaring ma-access, halimbawa, gamit ang curl utility. Ang iminungkahing diskarte ay nagbibigay-daan sa developer na tumuon sa pagsulat ng eBPF code at hindi magambala sa pamamagitan ng pag-aayos ng pakikipag-ugnayan sa code na ito mula sa espasyo ng user, pag-assemble at pag-load sa kernel.

Upang pamahalaan ang mga programang eBPF, isang Docker-style na "bee" na utility ay inaalok, kung saan maaari mong agad na i-download ang eBPF handler ng interes mula sa isang panlabas na imbakan at patakbuhin ito sa lokal na sistema. Binibigyang-daan ka ng toolkit na bumuo ng isang code framework sa C para sa mga tagapangasiwa ng eBPF ng isang napiling paksa (kasalukuyang mga tagapangasiwa lamang para sa network at mga pagpapatakbo ng file na humarang sa mga tawag sa network stack at mga file system ang sinusuportahan). Batay sa nabuong framework, mabilis na maipapatupad ng developer ang functionality na interesado siya.

Hindi tulad ng BCC (BPF Compiler Collection), hindi ganap na muling itinatayo ng BumbleBee ang handler code para sa bawat bersyon ng Linux kernel (Gumagamit ang BCC ng on-the-fly compilation gamit ang Clang sa tuwing ilulunsad ang eBPF program). Upang malutas ang mga problema sa portability, ang CO-RE at libbpf na mga tool ay binuo, na nagbibigay-daan sa iyong bumuo ng code nang isang beses lamang at gumamit ng isang espesyal na unibersal na loader na umaangkop sa na-load na programa sa kasalukuyang kernel at BTF Type Format. Ang BumbleBee ay isang add-on sa libbpf at nagbibigay ng mga karagdagang uri para sa awtomatikong interpretasyon at pagpapakita ng data na matatagpuan sa mga karaniwang istruktura ng mapa ng eBPF na RingBuffer at HashMap.

Upang buuin ang panghuling programa ng eBPF at i-save ito bilang isang OCI na imahe, patakbuhin lang ang command na "bee build file_with_code name:version", at para patakbuhin ang command na "bee run name:version". Bilang default, ang mga kaganapan na natanggap mula sa handler ay ilalabas sa terminal window, ngunit kung kinakailangan, maaari kang makakuha ng data sa pamamagitan ng paggamit ng curl o wget utilities sa network port na nakatali sa handler. Ang mga handler ay maaaring ipamahagi sa pamamagitan ng OCI-compatible na mga repository, halimbawa, upang magpatakbo ng external na handler mula sa ghcr.io repository (GitHub Container Registry), maaari mong patakbuhin ang command na β€œbee run ghcr.io/solo-io/bumblebee/tcpconnect: $(bersyon ng pukyutan)”. Upang maglagay ng handler sa repositoryo, ang "bee push" na utos ay iminungkahi, at upang itali ang isang bersyon, "bee tag".

Pinagmulan: opennet.ru

Magdagdag ng komento