BumbleBee: un conjunto de herramientas para simplificar la creación y distribución de programas eBPF

Solo.io, una empresa que desarrolla productos para ejecutar sistemas en la nube, microservicios, contenedores aislados y computación sin servidor, ha publicado BumbleBee, un conjunto de herramientas de código abierto destinado a simplificar la preparación, distribución y lanzamiento de programas eBPF que se ejecutan en una máquina virtual especial en su interior. el kernel de Linux y permiten procesar operaciones de red, controlar accesos y monitorear sistemas. El código está escrito en Go y distribuido bajo la licencia Apache 2.0.

BumbleBee permite empaquetar un programa eBPF como una imagen de contenedor en formato OCI (Open Container Initiative), que se puede ejecutar en cualquier sistema sin recompilación ni uso de componentes adicionales en el espacio del usuario. BumbleBee se encarga de la interacción con el código eBPF en el núcleo, incluido el procesamiento de datos provenientes del controlador eBPF, y exporta automáticamente estos datos en forma de métricas, histogramas o registros, a los que se puede acceder, por ejemplo, mediante el utilidad curl. El enfoque propuesto permite al desarrollador concentrarse en escribir código eBPF y no distraerse organizando la interacción con este código desde el espacio del usuario, el ensamblaje y la carga en el kernel.

Para administrar programas eBPF, se ofrece una utilidad "abeja" estilo Docker, con la que puede descargar inmediatamente el controlador eBPF de interés desde un repositorio externo y ejecutarlo en el sistema local. El kit de herramientas le permite generar un marco de código en C para controladores eBPF de un tema seleccionado (actualmente solo se admiten controladores para operaciones de red y archivos que interceptan llamadas a la pila de red y a los sistemas de archivos). Según el marco generado, el desarrollador puede implementar rápidamente la funcionalidad que le interesa.

A diferencia de BCC (BPF Compiler Collection), BumbleBee no reconstruye completamente el código del controlador para cada versión del kernel de Linux (BCC utiliza compilación sobre la marcha usando Clang cada vez que se inicia el programa eBPF). Para resolver problemas de portabilidad, se están desarrollando las herramientas CO-RE y libbpf, que le permiten compilar código solo una vez y utilizar un cargador universal especial que adapta el programa cargado al kernel actual y al formato de tipo BTF. BumbleBee es un complemento de libbpf y proporciona tipos adicionales para la interpretación y visualización automática de datos ubicados en las estructuras de mapas estándar de eBPF RingBuffer y HashMap.

Para compilar el programa eBPF final y guardarlo como una imagen OCI, simplemente ejecute el comando "bee build file_with_code name:version" y ejecute el comando "bee run name:version". De forma predeterminada, los eventos recibidos del controlador se enviarán a la ventana del terminal, pero si es necesario, puede obtener datos utilizando las utilidades curl o wget en el puerto de red vinculado al controlador. Los controladores se pueden distribuir a través de repositorios compatibles con OCI, por ejemplo, para ejecutar un controlador externo desde el repositorio ghcr.io (GitHub Container Registry), puede ejecutar el comando “bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(versión abeja)”. Para colocar un controlador en el repositorio, se propone el comando "bee push" y para vincular una versión, "bee tag".

Fuente: opennet.ru

Añadir un comentario