BumbleBee - مجموعة أدوات لتبسيط إنشاء وتوزيع برامج eBPF

قامت شركة Solo.io، وهي شركة تعمل على تطوير منتجات لتشغيل الأنظمة السحابية والخدمات الصغيرة والحاويات المعزولة والحوسبة بدون خادم، بنشر BumbleBee، وهي مجموعة أدوات مفتوحة المصدر تهدف إلى تبسيط إعداد وتوزيع وإطلاق برامج eBPF التي تعمل في جهاز افتراضي خاص بالداخل نواة لينكس وتسمح بمعالجة عمليات الشبكة والتحكم في الوصول ومراقبة الأنظمة. الكود مكتوب بلغة Go ويتم توزيعه بموجب ترخيص Apache 2.0.

يتيح BumbleBee إمكانية حزم برنامج eBPF كصورة حاوية بتنسيق OCI (مبادرة الحاوية المفتوحة)، والتي يمكن تشغيلها على أي نظام دون إعادة الترجمة واستخدام مكونات إضافية في مساحة المستخدم. يتم التعامل مع التفاعل مع كود eBPF في المركز، بما في ذلك معالجة البيانات الواردة من معالج eBPF، بواسطة BumbleBee، الذي يقوم تلقائيًا بتصدير هذه البيانات في شكل مقاييس أو رسوم بيانية أو سجلات، والتي يمكن الوصول إليها، على سبيل المثال، باستخدام فائدة حليقة. يسمح النهج المقترح للمطور بالتركيز على كتابة كود eBPF وعدم تشتيت انتباهه عن طريق تنظيم التفاعل مع هذا الكود من مساحة المستخدم والتجميع والتحميل في النواة.

لإدارة برامج eBPF، يتم تقديم أداة مساعدة "bee" على نمط Docker، والتي يمكنك من خلالها تنزيل معالج eBPF محل الاهتمام على الفور من مستودع خارجي وتشغيله على النظام المحلي. تسمح لك مجموعة الأدوات بإنشاء إطار عمل تعليمات برمجية في لغة C لمعالجات eBPF لموضوع محدد (حاليًا يتم دعم فقط معالجات عمليات الشبكة والملفات التي تعترض المكالمات إلى مكدس الشبكة وأنظمة الملفات). واستنادا إلى الإطار الذي تم إنشاؤه، يمكن للمطور تنفيذ الوظيفة التي يهتم بها بسرعة.

على عكس BCC (مجموعة مترجم BPF)، لا يقوم BumbleBee بإعادة بناء كود المعالج بشكل كامل لكل إصدار من Linux kernel (يستخدم BCC تجميعًا فوريًا باستخدام Clang في كل مرة يتم فيها تشغيل برنامج eBPF). لحل مشاكل قابلية النقل، يتم تطوير أدوات CO-RE وlibbpf، مما يسمح لك ببناء التعليمات البرمجية مرة واحدة فقط واستخدام محمل عالمي خاص يكيف البرنامج المحمل مع kernel الحالي وتنسيق نوع BTF. يعد BumbleBee إضافة إلى libbpf ويوفر أنواعًا إضافية للتفسير التلقائي وعرض البيانات الموجودة في هياكل خرائط eBPF القياسية RingBuffer وHashMap.

لإنشاء برنامج eBPF النهائي وحفظه كصورة OCI، ما عليك سوى تشغيل الأمر "bee build file_with_code name:version"، ولتشغيل الأمر "bee run name:version". بشكل افتراضي، سيتم إخراج الأحداث المستلمة من المعالج إلى النافذة الطرفية، ولكن إذا لزم الأمر، يمكنك الحصول على البيانات باستخدام الأدوات المساعدة cur أو wget إلى منفذ الشبكة المرتبط بالمعالج. يمكن توزيع المعالجات من خلال مستودعات متوافقة مع OCI، على سبيل المثال، لتشغيل معالج خارجي من مستودع ghcr.io (GitHub Container Registry)، يمكنك تشغيل الأمر "bee run ghcr.io/solo-io/bumblebee/tcpconnect: $(نسخة النحل)". لوضع معالج في المستودع، يُقترح أمر "bee Push"، ولربط إصدار "bee tag".

المصدر: opennet.ru

إضافة تعليق