BumbleBee - une boîte à outils pour simplifier la création et la distribution de programmes eBPF

Solo.io, une société qui développe des produits pour l'exécution de systèmes cloud, de microservices, de conteneurs isolés et d'informatique sans serveur, a publié BumbleBee, une boîte à outils open source visant à simplifier la préparation, la distribution et le lancement de programmes eBPF qui s'exécutent dans une machine virtuelle spéciale à l'intérieur. le noyau Linux et permettre de traiter les opérations du réseau, de contrôler l'accès et de surveiller les systèmes. Le code est écrit en Go et distribué sous la licence Apache 2.0.

BumbleBee permet de conditionner un programme eBPF sous forme d'image de conteneur au format OCI (Open Container Initiative), qui peut être exécuté sur n'importe quel système sans recompilation ni utilisation de composants supplémentaires dans l'espace utilisateur. L'interaction avec le code eBPF dans le noyau, y compris le traitement des données provenant du gestionnaire eBPF, est prise en charge par BumbleBee, qui exporte automatiquement ces données sous forme de métriques, d'histogrammes ou de journaux, accessibles, par exemple, à l'aide du utilitaire curl. L'approche proposée permet au développeur de se concentrer sur l'écriture du code eBPF et de ne pas se laisser distraire par l'organisation de l'interaction avec ce code depuis l'espace utilisateur, l'assemblage et le chargement dans le noyau.

Pour gérer les programmes eBPF, un utilitaire « abeille » de style Docker est proposé, avec lequel vous pouvez immédiatement télécharger le gestionnaire eBPF qui vous intéresse à partir d'un référentiel externe et l'exécuter sur le système local. La boîte à outils vous permet de générer un cadre de code en C pour les gestionnaires eBPF d'un sujet sélectionné (actuellement, seuls les gestionnaires des opérations réseau et de fichiers qui interceptent les appels vers la pile réseau et les systèmes de fichiers sont pris en charge). Sur la base du framework généré, le développeur peut rapidement implémenter la fonctionnalité qui l'intéresse.

Contrairement à BCC (BPF Compiler Collection), BumbleBee ne reconstruit pas complètement le code du gestionnaire pour chaque version du noyau Linux (BCC utilise la compilation à la volée en utilisant Clang à chaque lancement du programme eBPF). Pour résoudre les problèmes de portabilité, les outils CO-RE et libbpf sont en cours de développement, vous permettant de créer du code une seule fois et d'utiliser un chargeur universel spécial qui adapte le programme chargé au noyau actuel et au format de type BTF. BumbleBee est un module complémentaire de libbpf et fournit des types supplémentaires pour l'interprétation et l'affichage automatiques des données situées dans les structures cartographiques eBPF standard RingBuffer et HashMap.

Pour créer le programme eBPF final et l'enregistrer en tant qu'image OCI, exécutez simplement la commande « bee build file_with_code name:version » et exécutez la commande « bee run name:version ». Par défaut, les événements reçus du gestionnaire seront affichés dans la fenêtre du terminal, mais si nécessaire, vous pouvez obtenir des données en utilisant les utilitaires curl ou wget sur le port réseau lié au gestionnaire. Les gestionnaires peuvent être distribués via des référentiels compatibles OCI, par exemple, pour exécuter un gestionnaire externe à partir du référentiel ghcr.io (GitHub Container Registry), vous pouvez exécuter la commande « bee run ghcr.io/solo-io/bumblebee/tcpconnect : $(version abeille)”. Pour placer un handler dans le référentiel, la commande « bee push » est proposée, et pour lier une version, « bee tag ».

Source: opennet.ru

Ajouter un commentaire