BumbleBee – ein Toolkit zur Vereinfachung der Erstellung und Verteilung von eBPF-Programmen

Solo.io, ein Unternehmen, das Produkte für den Betrieb von Cloud-Systemen, Microservices, isolierten Containern und serverlosem Computing entwickelt, hat BumbleBee veröffentlicht, ein Open-Source-Toolkit, das die Vorbereitung, Verteilung und den Start von eBPF-Programmen vereinfachen soll, die in einer speziellen virtuellen Maschine im Inneren ausgeführt werden des Linux-Kernels und ermöglichen die Verarbeitung von Netzwerkvorgängen, die Zugriffskontrolle und die Überwachung von Systemen. Der Code ist in Go geschrieben und wird unter der Apache 2.0-Lizenz vertrieben.

BumbleBee ermöglicht es, ein eBPF-Programm als Container-Image im OCI-Format (Open Container Initiative) zu packen, das auf jedem System ohne Neukompilierung und die Verwendung zusätzlicher Komponenten im User Space ausgeführt werden kann. Die Interaktion mit dem eBPF-Code im Kern, einschließlich der Verarbeitung der vom eBPF-Handler kommenden Daten, wird von BumbleBee übernommen, das diese Daten automatisch in Form von Metriken, Histogrammen oder Protokollen exportiert, auf die beispielsweise über das zugegriffen werden kann Curl-Dienstprogramm. Der vorgeschlagene Ansatz ermöglicht es dem Entwickler, sich auf das Schreiben von eBPF-Code zu konzentrieren und nicht durch die Organisation der Interaktion mit diesem Code vom Benutzerbereich über die Assemblierung bis hin zum Laden in den Kernel abgelenkt zu werden.

Zur Verwaltung von eBPF-Programmen wird ein „Bee“-Dienstprogramm im Docker-Stil angeboten, mit dem Sie den gewünschten eBPF-Handler sofort aus einem externen Repository herunterladen und auf dem lokalen System ausführen können. Mit dem Toolkit können Sie in C ein Code-Framework für eBPF-Handler eines ausgewählten Themas generieren (derzeit werden nur Handler für Netzwerk- und Dateivorgänge unterstützt, die Aufrufe an den Netzwerkstapel und Dateisysteme abfangen). Basierend auf dem generierten Framework kann der Entwickler die für ihn interessante Funktionalität schnell implementieren.

Im Gegensatz zu BCC (BPF Compiler Collection) erstellt BumbleBee den Handler-Code nicht für jede Version des Linux-Kernels vollständig neu (BCC verwendet bei jedem Start des eBPF-Programms eine On-the-Fly-Kompilierung mit Clang). Um Probleme mit der Portabilität zu lösen, werden die Tools CO-RE und libbpf entwickelt, die es Ihnen ermöglichen, Code nur einmal zu erstellen und einen speziellen universellen Loader zu verwenden, der das geladene Programm an den aktuellen Kernel und das BTF-Typformat anpasst. BumbleBee ist ein Add-on zu libbpf und stellt zusätzliche Typen für die automatische Interpretation und Anzeige von Daten bereit, die sich in den Standard-eBPF-Kartenstrukturen RingBuffer und HashMap befinden.

Um das endgültige eBPF-Programm zu erstellen und als OCI-Image zu speichern, führen Sie einfach den Befehl „bee build file_with_code name:version“ und den Befehl „bee run name:version“ aus. Standardmäßig werden vom Handler empfangene Ereignisse im Terminalfenster ausgegeben. Bei Bedarf können Sie Daten jedoch mithilfe der Dienstprogramme „curl“ oder „wget“ über den an den Handler gebundenen Netzwerkport abrufen. Handler können über OCI-kompatible Repositorys verteilt werden. Um beispielsweise einen externen Handler aus dem ghcr.io-Repository (GitHub Container Registry) auszuführen, können Sie den Befehl „bee run ghcr.io/solo-io/bumblebee/tcpconnect“ ausführen: $(Bienenversion)“. Um einen Handler im Repository zu platzieren, wird der Befehl „bee push“ vorgeschlagen, und um eine Version zu binden, „bee tag“.

Source: opennet.ru

Kommentar hinzufügen