BumbleBee - набор от инструменти за опростяване на създаването и разпространението на eBPF програми

Solo.io, компания, която разработва продукти за управление на облачни системи, микроуслуги, изолирани контейнери и изчисления без сървър, публикува BumbleBee, инструментариум с отворен код, насочен към опростяване на подготовката, разпространението и стартирането на eBPF програми, които се изпълняват в специална виртуална машина вътре ядрото на Linux и позволява обработка на мрежови операции, контрол на достъпа и системи за наблюдение. Кодът е написан на Go и се разпространява под лиценз Apache 2.0.

BumbleBee прави възможно пакетирането на eBPF програма като изображение на контейнер във формат OCI (Open Container Initiative), който може да се изпълнява на всяка система без повторно компилиране и използване на допълнителни компоненти в потребителското пространство. Взаимодействието с eBPF кода в ядрото, включително обработката на данни, идващи от манипулатора на eBPF, се поема от BumbleBee, който автоматично експортира тези данни под формата на показатели, хистограми или регистрационни файлове, които могат да бъдат достъпни, например с помощта на помощна програма за къдрици. Предложеният подход позволява на разработчика да се съсредоточи върху писането на eBPF код и да не се разсейва от организирането на взаимодействие с този код от потребителското пространство, асемблирането и зареждането в ядрото.

За управление на eBPF програми се предлага помощна програма „bee“ в стил Docker, с която можете незабавно да изтеглите интересуващия ви манипулатор на eBPF от външно хранилище и да го стартирате на локалната система. Инструментариумът ви позволява да генерирате кодова рамка в C за eBPF манипулатори на избрана тема (понастоящем се поддържат само манипулатори за мрежови и файлови операции, които прихващат повиквания към мрежовия стек и файлови системи). Въз основа на генерираната рамка, разработчикът може бързо да внедри функционалността, която го интересува.

За разлика от BCC (BPF Compiler Collection), BumbleBee не възстановява напълно кода на манипулатора за всяка версия на ядрото на Linux (BCC използва компилация в движение с помощта на Clang всеки път, когато програмата eBPF се стартира). За решаване на проблеми с преносимостта се разработват инструментите CO-RE и libbpf, които ви позволяват да създавате код само веднъж и да използвате специален универсален товарач, който адаптира заредената програма към текущото ядро ​​и BTF Type Format. BumbleBee е добавка към libbpf и предоставя допълнителни типове за автоматично тълкуване и показване на данни, намиращи се в стандартните eBPF картографски структури RingBuffer и HashMap.

За да изградите окончателната eBPF програма и да я запишете като OCI изображение, просто изпълнете командата „bee build file_with_code name:version“ и за да изпълните командата „bee run name:version“. По подразбиране събитията, получени от манипулатора, ще бъдат изведени към прозореца на терминала, но ако е необходимо, можете да получите данни чрез помощни програми curl или wget към мрежовия порт, свързан с манипулатора. Манипулаторите могат да се разпространяват чрез OCI-съвместими хранилища, например, за да стартирате външен манипулатор от хранилището на ghcr.io (GitHub Container Registry), можете да изпълните командата „bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(версия за пчели)”. За да поставите манипулатор в хранилището, се предлага командата „bee push“, а за обвързване на версия, „bee tag“.

Източник: opennet.ru

Добавяне на нов коментар