BumbleBee — un outil pour simplifier la création et la distribution de programmes eBPF

La société Solo.io, qui développe des produits pour le fonctionnement des systèmes Cloud, des microservices, des conteneurs isolés et du calcul sans serveur, a publié un outil open source nommé BumbleBee, destiné à simplifier la préparation, la distribution et le lancement des programmes eBPF, exécutés dans une machine virtuelle dédiée au sein du noyau Linux, permettant de traiter les opérations réseau, de contrôler l'accès et de suivre le fonctionnement des systèmes. Le code est écrit en Go et distribué sous la licence Apache 2.0.

BumbleBee permet d'emballer un programme eBPF sous forme d'image de conteneur au format OCI (Open Container Initiative), qui peut être exécutée 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 des gestionnaires eBPF, est gérée par BumbleBee, qui exporte automatiquement ces données sous forme de métriques, d'histogrammes ou de journaux, accessibles par exemple via la commande curl. L'approche proposée permet au développeur de se concentrer sur l'écriture du code eBPF sans se soucier de l'interaction avec ce code depuis l'espace utilisateur, de l'assemblage et du chargement dans le noyau.

Pour gérer les programmes eBPF, un outil similaire à Docker nommé « bee » est proposé, permettant de charger immédiatement le gestionnaire eBPF souhaité depuis un dépôt externe et de le lancer sur le système local. L'outil permet de générer une structure de code en C pour les gestionnaires eBPF choisis (actuellement seuls les gestionnaires d'opérations réseau et de fichiers qui interceptent les appels de la pile réseau et des systèmes de fichiers sont pris en charge). À partir de la structure générée, le développeur peut rapidement mettre en œuvre la fonctionnalité qui l'intéresse.

Contrairement à BCC (BPF Compiler Collection), BumbleBee ne nécessite pas de recompilation complète du code du gestionnaire pour chaque version du noyau Linux (BCC utilise la compilation à la volée avec Clang à chaque exécution d'un programme eBPF). Pour résoudre les problèmes de portabilité, les outils CO-RE et libbpf sont en cours de développement, permettant de compiler le code une seule fois et d'utiliser un chargeur universel spécial, adaptant le programme chargé au noyau courant et aux types BTF (BPF Type Format). BumbleBee est une surcouche de libbpf et fournit des types supplémentaires pour l'interprétation et l'affichage automatiques des données, stockées dans les structures map standard de eBPF, RingBuffer et HashMap.

Pour compiler le programme eBPF final et le sauvegarder sous forme d'image OCI, il suffit d'exécuter la commande « bee build fichier_avec_code nom:version », et pour l'exécution, la commande « bee run nom:version ». Par défaut, les événements reçus du gestionnaire seront affichés dans la fenêtre du terminal, mais si nécessaire, il est possible d'obtenir les données en utilisant les utilitaires curl ou wget pour interroger le port réseau lié au gestionnaire. Les gestionnaires peuvent être distribués via des dépôts compatibles avec OCI ; par exemple, pour exécuter un gestionnaire externe à partir du dépôt ghcr.io (GitHub Container Registry), il est possible d'exécuter la commande « bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version) ». Pour placer le gestionnaire dans le dépôt, la commande « bee push » est suggérée, tandis que pour lier une version, c'est « bee tag ».

Source : opennet.ru

Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS 🔥 Acheter un hébergement fiable pour les sites avec protection DDoS, serveurs VPS VDS | ProHoster