BumbleBee — ein Toolkit zur Vereinfachung der Erstellung und Verbreitung von eBPF-Programmen

Das Unternehmen Solo.io, das Produkte zur Unterstützung von Cloud-Systemen, Mikroservices, isolierten Containern und serverlosen Berechnungen entwickelt, hat das Open-Source-Tool BumbleBee veröffentlicht, das darauf abzielt, die Vorbereitung, Verbreitung und Ausführung von eBPF-Programmen zu vereinfachen. Diese Programme werden in einer speziellen virtuellen Maschine innerhalb des Linux-Kernels ausgeführt und ermöglichen die Verarbeitung von Netzwerkoperationen, die Zugangskontrolle und die Überwachung von Systemleistungen. Der Code ist in der Programmiersprache Go geschrieben und wird unter der Lizenz Apache 2.0 veröffentlicht.

BumbleBee ermöglicht es, eBPF-Programme als OCI (Open Container Initiative)-Container-Image zu verpacken, das auf beliebigen Systemen ohne Neukompilierung und zusätzliche Komponenten im Benutzerspeicher ausgeführt werden kann. BumbleBee kümmert sich um die Interaktion mit dem eBPF-Code im Kernel, einschließlich der Verarbeitung von Daten, die von eBPF-Handlern stammen. Diese Daten werden automatisch von BumbleBee als Metriken, Histogramme oder Logs exportiert, auf die beispielsweise mit dem Tool curl zugegriffen werden kann. Der vorgeschlagene Ansatz ermöglicht es Entwicklern, sich auf das Schreiben von eBPF-Code zu konzentrieren, ohne sich um die Organisation der Interaktion mit diesem Code aus dem Benutzerspeicher sowie um den Zusammenbau und das Laden in den Kernel kümmern zu müssen.

Zur Verwaltung von eBPF-Programmen steht das im Docker-Stil entwickelte Tool "bee" zur Verfügung. Damit können Sie sofort den gewünschten eBPF-Handler aus einem externen Repository laden und auf Ihrem lokalen System ausführen. Das Werkzeug ermöglicht die Generierung eines Codegerüstes in C für eBPF-Handler zu einem bestimmten Thema (derzeit werden nur Handler für Netzwerk- und Dateioperationen unterstützt, die Aufrufe des Netzwerkstacks und der Dateisysteme abfangen). Auf Basis des generierten Gerüsts kann der Entwickler schnell die gewünschte Funktionalität implementieren.

Im Gegensatz zu BCC (BPF Compiler Collection) erfolgt bei BumbleBee keine vollständige Neukompilierung des Handler-Codes für jede Version des Linux-Kernels (BCC nutzt zur Laufzeit die Kompilierung mit Clang bei jedem Start eines eBPF-Programms). Um Probleme mit der Portabilität zu lösen, werden die Werkzeuge CO-RE und libbpf weiterentwickelt, die es ermöglichen, den Code nur einmal zu erstellen und einen speziellen universellen Loader zu verwenden, der das geladene Programm an den aktuellen Kernel und die BTF-Typen (BPF Type Format) anpasst. BumbleBee ist eine Erweiterung von libbpf und bietet zusätzliche Typen für die automatische Interpretation und Anzeige von Daten, die in den Standard-eBPF-Map-Strukturen RingBuffer und HashMap gespeichert sind.

Um das endgültige eBPF-Programm zu erstellen und als OCI-Image zu speichern, genügt es, den Befehl „bee build datei_mit_code name:version“ auszuführen. Zum Starten verwenden Sie den Befehl „bee run name:version“. Standardmäßig werden die vom Ereignis-Handler erzeugten Ausgaben im Terminalfenster angezeigt, aber Sie können die Daten auch abrufen, indem Sie die Werkzeuge curl oder wget für den an den Handler gebundenen Netzwerkport verwenden. Handler können über OCI-kompatible Repositories verbreitet werden. Zum Beispiel können Sie einen externen Handler aus dem Repository ghcr.io (GitHub Container Registry) mit dem Befehl „bee run ghcr.io/solo-io/bumblebee/tcpconnect:$(bee version)“ starten. Zum Hochladen des Handlers in das Repository wird der Befehl „bee push“ vorgeschlagen, und zum Taggen der Version verwenden Sie „bee tag“.

Quelle: opennet.ru

Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server 🔥 Kaufen Sie zuverlässiges Hosting für Websites mit DDoS-Schutz, VPS VDS-Server | ProHoster