BumbleBee - μια εργαλειοθήκη για την απλοποίηση της δημιουργίας και διανομής προγραμμάτων eBPF

Η Solo.io, μια εταιρεία που αναπτύσσει προϊόντα για τη λειτουργία συστημάτων cloud, μικροϋπηρεσιών, απομονωμένων κοντέινερ και υπολογιστών χωρίς διακομιστές, δημοσίευσε το BumbleBee, μια εργαλειοθήκη ανοιχτού κώδικα που στοχεύει στην απλοποίηση της προετοιμασίας, διανομής και εκκίνησης προγραμμάτων eBPF που εκτελούνται σε μια ειδική εικονική μηχανή μέσα. τον πυρήνα Linux και επιτρέπουν την επεξεργασία λειτουργιών δικτύου, τον έλεγχο της πρόσβασης και τα συστήματα παρακολούθησης. Ο κώδικας είναι γραμμένος στο Go και διανέμεται με την άδεια Apache 2.0.

Το BumbleBee καθιστά δυνατή τη συσκευασία ενός προγράμματος eBPF ως εικόνα κοντέινερ σε μορφή OCI (Open Container Initiative), η οποία μπορεί να εκτελεστεί σε οποιοδήποτε σύστημα χωρίς επαναμεταγλώττιση και χρήση πρόσθετων στοιχείων στο χώρο χρήστη. Η αλληλεπίδραση με τον κώδικα eBPF στον πυρήνα, συμπεριλαμβανομένης της επεξεργασίας δεδομένων που προέρχονται από τον χειριστή eBPF, αναλαμβάνεται από την BumbleBee, η οποία εξάγει αυτόματα αυτά τα δεδομένα με τη μορφή μετρήσεων, ιστογραμμάτων ή αρχείων καταγραφής, στα οποία μπορείτε να έχετε πρόσβαση, για παράδειγμα, χρησιμοποιώντας το βοηθητικό πρόγραμμα για μπούκλες. Η προτεινόμενη προσέγγιση επιτρέπει στον προγραμματιστή να επικεντρωθεί στη σύνταξη κώδικα eBPF και να μην αποσπάται η προσοχή οργανώνοντας την αλληλεπίδραση με αυτόν τον κώδικα από το χώρο χρήστη, τη συναρμολόγηση και τη φόρτωση στον πυρήνα.

Για τη διαχείριση προγραμμάτων eBPF, προσφέρεται ένα βοηθητικό πρόγραμμα "bee" τύπου Docker, με το οποίο μπορείτε να πραγματοποιήσετε αμέσως λήψη του προγράμματος χειρισμού eBPF που σας ενδιαφέρει από ένα εξωτερικό αποθετήριο και να το εκτελέσετε στο τοπικό σύστημα. Η εργαλειοθήκη σάς επιτρέπει να δημιουργήσετε ένα πλαίσιο κώδικα σε C για χειριστές eBPF ενός επιλεγμένου θέματος (προς το παρόν υποστηρίζονται μόνο χειριστές για λειτουργίες δικτύου και αρχείων που παρεμποδίζουν κλήσεις προς τη στοίβα δικτύου και τα συστήματα αρχείων). Με βάση το πλαίσιο που δημιουργείται, ο προγραμματιστής μπορεί να εφαρμόσει γρήγορα τη λειτουργικότητα που τον ενδιαφέρει.

Σε αντίθεση με το BCC (Συλλογή μεταγλωττιστή BPF), το BumbleBee δεν αναδημιουργεί πλήρως τον κώδικα χειριστή για κάθε έκδοση του πυρήνα Linux (το BCC χρησιμοποιεί μεταγλώττιση on-the-fly χρησιμοποιώντας το Clang κάθε φορά που εκκινείται το πρόγραμμα eBPF). Για την επίλυση προβλημάτων με τη φορητότητα, αναπτύσσονται τα εργαλεία CO-RE και libbpf, επιτρέποντάς σας να δημιουργήσετε κώδικα μόνο μία φορά και να χρησιμοποιήσετε έναν ειδικό γενικό φορτωτή που προσαρμόζει το φορτωμένο πρόγραμμα στον τρέχοντα πυρήνα και τη μορφή τύπου BTF. Το BumbleBee είναι ένα πρόσθετο στο libbpf και παρέχει πρόσθετους τύπους για αυτόματη ερμηνεία και εμφάνιση δεδομένων που βρίσκονται στις τυπικές δομές χαρτών eBPF RingBuffer και HashMap.

Για να δημιουργήσετε το τελικό πρόγραμμα eBPF και να το αποθηκεύσετε ως εικόνα OCI, απλώς εκτελέστε την εντολή "bee build file_with_code name:version" και για να εκτελέσετε την εντολή "bee run name:version". Από προεπιλογή, τα συμβάντα που λαμβάνονται από το πρόγραμμα χειρισμού θα εξάγονται στο παράθυρο του τερματικού, αλλά εάν είναι απαραίτητο, μπορείτε να λάβετε δεδομένα χρησιμοποιώντας βοηθητικά προγράμματα curl ή wget στη θύρα δικτύου που είναι συνδεδεμένη με το πρόγραμμα χειρισμού. Οι χειριστές μπορούν να διανεμηθούν μέσω αποθετηρίων συμβατών με OCI, για παράδειγμα, για να εκτελέσετε έναν εξωτερικό χειριστή από το αποθετήριο ghcr.io (GitHub Container Registry), μπορείτε να εκτελέσετε την εντολή "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(έκδοση μέλισσας)”. Για να τοποθετήσετε έναν χειριστή στο αποθετήριο, προτείνεται η εντολή "bee push" και για να συνδέσετε μια έκδοση, "bee tag".

Πηγή: opennet.ru

Προσθέστε ένα σχόλιο