BumbleBee - een toolkit om het maken en distribueren van eBPF-programma's te vereenvoudigen

Solo.io, een bedrijf dat producten ontwikkelt voor het draaien van cloudsystemen, microservices, geïsoleerde containers en serverloos computergebruik, heeft BumbleBee gepubliceerd, een open source toolkit gericht op het vereenvoudigen van de voorbereiding, distributie en lancering van eBPF-programma's die draaien in een speciale virtuele machine binnenin de Linux-kernel en maken het mogelijk netwerkbewerkingen te verwerken, toegang te controleren en systemen te monitoren. De code is geschreven in Go en gedistribueerd onder de Apache 2.0-licentie.

BumbleBee maakt het mogelijk om een ​​eBPF-programma te verpakken als een containerimage in het OCI-formaat (Open Container Initiative), dat op elk systeem kan worden uitgevoerd zonder hercompilatie en het gebruik van extra componenten in de gebruikersruimte. De interactie met de eBPF-code in de kern, inclusief de verwerking van gegevens afkomstig van de eBPF-handler, wordt overgenomen door BumbleBee, die deze gegevens automatisch exporteert in de vorm van metrieken, histogrammen of logs, die bijvoorbeeld toegankelijk zijn via de krul hulpprogramma. De voorgestelde aanpak stelt de ontwikkelaar in staat zich te concentreren op het schrijven van eBPF-code en zich niet te laten afleiden door het organiseren van de interactie met deze code vanuit de gebruikersruimte, het assembleren en het laden in de kernel.

Om eBPF-programma's te beheren wordt een Docker-stijl “bee”-hulpprogramma aangeboden, waarmee u de gewenste eBPF-handler onmiddellijk kunt downloaden van een externe repository en deze op het lokale systeem kunt uitvoeren. Met de toolkit kunt u een codeframework in C genereren voor eBPF-handlers van een geselecteerd onderwerp (momenteel worden alleen handlers voor netwerk- en bestandsbewerkingen ondersteund die oproepen naar de netwerkstack en bestandssystemen onderscheppen). Op basis van het gegenereerde raamwerk kan de ontwikkelaar snel de functionaliteit implementeren waarin hij geïnteresseerd is.

In tegenstelling tot BCC (BPF Compiler Collection) herbouwt BumbleBee de handlercode voor elke versie van de Linux-kernel niet volledig (BCC gebruikt on-the-fly compilatie met behulp van Clang elke keer dat het eBPF-programma wordt gestart). Om problemen met portabiliteit op te lossen, worden de CO-RE- en libbpf-tools ontwikkeld, waardoor je slechts één keer code kunt bouwen en een speciale universele lader kunt gebruiken die het geladen programma aanpast aan de huidige kernel en het BTF-typeformaat. BumbleBee is een add-on voor libbpf en biedt extra typen voor automatische interpretatie en weergave van gegevens in de standaard eBPF-kaartstructuren RingBuffer en HashMap.

Om het uiteindelijke eBPF-programma te bouwen en op te slaan als een OCI-image, voert u gewoon het commando “bee build file_with_code name:version” uit, en vervolgens het commando “bee run name:version”. Standaard worden gebeurtenissen die van de handler worden ontvangen naar het terminalvenster uitgevoerd, maar indien nodig kunt u gegevens verkrijgen door de curl- of wget-hulpprogramma's te gebruiken op de netwerkpoort die aan de handler is gekoppeld. Handlers kunnen worden gedistribueerd via OCI-compatibele repository's. Om bijvoorbeeld een externe handler uit de ghcr.io-repository (GitHub Container Registry) uit te voeren, kunt u de opdracht 'bee run ghcr.io/solo-io/bumblebee/tcpconnect uitvoeren: $(bijenversie)”. Om een ​​handler in de repository te plaatsen, wordt het commando “bee push” voorgesteld, en om een ​​versie te binden, “bee tag”.

Bron: opennet.ru

Voeg een reactie