BumbleBee - um kit de ferramentas para simplificar a criação e distribuição de programas eBPF

Solo.io, empresa que desenvolve produtos para execução de sistemas em nuvem, microsserviços, contêineres isolados e computação sem servidor, publicou o BumbleBee, um kit de ferramentas de código aberto que visa simplificar a preparação, distribuição e lançamento de programas eBPF que rodam em uma máquina virtual especial dentro o kernel Linux e permitem processar operações de rede, controlar acessos e monitorar sistemas. O código é escrito em Go e distribuído sob a licença Apache 2.0.

O BumbleBee possibilita empacotar um programa eBPF como uma imagem de contêiner no formato OCI (Open Container Initiative), que pode ser executado em qualquer sistema sem recompilação e uso de componentes adicionais no espaço do usuário. A interação com o código eBPF no núcleo, incluindo o processamento dos dados provenientes do manipulador eBPF, é assumida pelo BumbleBee, que exporta automaticamente esses dados na forma de métricas, histogramas ou logs, que podem ser acessados, por exemplo, usando o utilitário curl. A abordagem proposta permite que o desenvolvedor se concentre em escrever código eBPF e não se distraia organizando a interação com esse código a partir do espaço do usuário, montagem e carregamento no kernel.

Para gerenciar programas eBPF, é oferecido um utilitário “bee” estilo Docker, com o qual você pode baixar imediatamente o manipulador eBPF de interesse de um repositório externo e executá-lo no sistema local. O kit de ferramentas permite gerar uma estrutura de código em C para manipuladores eBPF de um tópico selecionado (atualmente são suportados apenas manipuladores para operações de rede e arquivos que interceptam chamadas para a pilha de rede e sistemas de arquivos). Com base no framework gerado, o desenvolvedor pode implementar rapidamente a funcionalidade de seu interesse.

Ao contrário do BCC (BPF Compiler Collection), o BumbleBee não reconstrói completamente o código do manipulador para cada versão do kernel Linux (o BCC usa compilação on-the-fly usando Clang sempre que o programa eBPF é iniciado). Para resolver problemas de portabilidade, estão sendo desenvolvidas as ferramentas CO-RE e libbpf, que permitem construir código apenas uma vez e usar um carregador universal especial que adapta o programa carregado ao kernel atual e ao formato do tipo BTF. BumbleBee é um complemento do libbpf e fornece tipos adicionais para interpretação automática e exibição de dados localizados nas estruturas de mapa eBPF padrão RingBuffer e HashMap.

Para construir o programa eBPF final e salvá-lo como uma imagem OCI, basta executar o comando “bee build file_with_code name:version”, e para executar o comando “bee run name:version”. Por padrão, os eventos recebidos do manipulador serão enviados para a janela do terminal, mas se necessário, você pode obter dados usando os utilitários curl ou wget para a porta de rede vinculada ao manipulador. Os manipuladores podem ser distribuídos através de repositórios compatíveis com OCI, por exemplo, para executar um manipulador externo do repositório ghcr.io (GitHub Container Registry), você pode executar o comando “bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(versão abelha)”. Para colocar um manipulador no repositório, é proposto o comando “bee push”, e para vincular uma versão, “bee tag”.

Fonte: opennet.ru

Adicionar um comentário