BumbleBee: un conxunto de ferramentas para simplificar a creación e distribución de programas eBPF

Solo.io, unha empresa que desenvolve produtos para executar sistemas en nube, microservizos, contedores illados e computación sen servidor, publicou BumbleBee, un conxunto de ferramentas de código aberto destinado a simplificar a preparación, distribución e lanzamento de programas eBPF que se executan nunha máquina virtual especial dentro do kernel Linux e que permite procesar operacións de rede, controlar o acceso e supervisar os sistemas. O código está escrito en Go e distribúese baixo a licenza Apache 2.0.

BumbleBee fai posible empaquetar un programa eBPF como imaxe de contedor no formato OCI (Open Container Initiative), que se pode executar en calquera sistema sen recompilación e o uso de compoñentes adicionais no espazo do usuario. A interacción co código eBPF no núcleo, incluído o procesamento de datos procedentes do controlador eBPF, corre a cargo de BumbleBee, que exporta automaticamente estes datos en forma de métricas, histogramas ou rexistros, aos que se pode acceder, por exemplo, mediante o utilidade curl. O enfoque proposto permite ao desenvolvedor centrarse en escribir código eBPF e non distraerse organizando a interacción con este código desde o espazo do usuario, a montaxe e a carga no núcleo.

Para xestionar os programas eBPF, ofrécese unha utilidade "abella" de estilo Docker, coa que pode descargar inmediatamente o controlador eBPF de interese desde un repositorio externo e executalo no sistema local. O conxunto de ferramentas permítelle xerar un marco de código en C para os controladores eBPF dun tema seleccionado (actualmente só se admiten os controladores para operacións de rede e ficheiros que interceptan chamadas á pila de rede e aos sistemas de ficheiros). Baseándose no marco xerado, o programador pode implementar rapidamente a funcionalidade que lle interesa.

A diferenza de BCC (BPF Compiler Collection), BumbleBee non reconstruíu completamente o código do controlador para cada versión do núcleo de Linux (BCC usa a compilación sobre a marcha usando Clang cada vez que se inicia o programa eBPF). Para resolver problemas de portabilidade, estanse a desenvolver as ferramentas CO-RE e libbpf, que permiten construír código só unha vez e utilizar un cargador universal especial que adapta o programa cargado ao kernel e ao formato de tipo BTF actual. BumbleBee é un complemento para libbpf e ofrece tipos adicionais para a interpretación automática e a visualización de datos localizados nas estruturas de mapas estándar eBPF RingBuffer e HashMap.

Para crear o programa eBPF final e gardalo como imaxe OCI, só tes que executar o comando "bee build file_with_code name:version" e executar o comando "bee run name:version". De forma predeterminada, os eventos recibidos do manejador sairán á xanela do terminal, pero se é necesario, pode obter datos usando as utilidades curl ou wget ao porto de rede vinculado ao manejador. Os controladores pódense distribuír a través de repositorios compatibles con OCI, por exemplo, para executar un controlador externo desde o repositorio ghcr.io (GitHub Container Registry), pode executar o comando "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(versión bee)”. Para colocar un controlador no repositorio proponse o comando "bee push", e para vincular unha versión, "bee tag".

Fonte: opennet.ru

Engadir un comentario