Solo.io، شرکتی که محصولاتی را برای اجرای سیستمهای ابری، میکروسرویسها، کانتینرهای ایزوله و محاسبات بدون سرور توسعه میدهد، BumbleBee را منتشر کرده است، یک جعبه ابزار منبع باز با هدف سادهسازی آمادهسازی، توزیع و راهاندازی برنامههای eBPF که در یک ماشین مجازی ویژه اجرا میشوند. هسته لینوکس و اجازه پردازش عملیات شبکه، کنترل دسترسی و نظارت بر سیستم ها را می دهد. کد در Go نوشته شده و تحت مجوز Apache 2.0 توزیع شده است.
BumbleBee بسته بندی یک برنامه eBPF را به عنوان یک تصویر ظرف در قالب OCI (Open Container Initiative) امکان پذیر می کند، که می تواند بر روی هر سیستمی بدون کامپایل مجدد و استفاده از اجزای اضافی در فضای کاربر اجرا شود. تعامل با کد eBPF در هسته، از جمله پردازش دادههای دریافتی از کنترلکننده eBPF، توسط BumbleBee انجام میشود که بهطور خودکار این دادهها را در قالب متریکها، هیستوگرام یا گزارشها صادر میکند، که میتوان به عنوان مثال با استفاده از ابزار حلقه رویکرد پیشنهادی به توسعهدهنده اجازه میدهد تا روی نوشتن کد eBPF تمرکز کند و با سازماندهی تعامل با این کد از فضای کاربر، اسمبلی و بارگذاری در هسته، حواسش پرت نشود.
برای مدیریت برنامههای eBPF، یک ابزار "زنبور عسل" به سبک Docker ارائه میشود که با آن میتوانید بلافاصله کنترلر eBPF مورد علاقه را از یک مخزن خارجی دانلود کرده و آن را در سیستم محلی اجرا کنید. جعبه ابزار به شما امکان می دهد یک چارچوب کد به زبان C برای کنترل کننده های eBPF یک موضوع انتخاب شده ایجاد کنید (در حال حاضر فقط کنترل کننده هایی برای عملیات شبکه و فایل که تماس های پشته شبکه و سیستم های فایل را رهگیری می کنند پشتیبانی می شوند). بر اساس چارچوب تولید شده، توسعه دهنده می تواند به سرعت عملکرد مورد نظر خود را پیاده سازی کند.
برخلاف BCC (مجموعه کامپایلر BPF)، BumbleBee کد کنترل کننده را برای هر نسخه از هسته لینوکس به طور کامل بازسازی نمی کند (BCC هر بار که برنامه eBPF راه اندازی می شود از کامپایل on-the-fly با استفاده از Clang استفاده می کند). برای حل مشکلات مربوط به قابلیت حمل، ابزارهای 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)، می توانید دستور "bee run ghcr.io/solo-io/bumblebee/tcpconnect" را اجرا کنید: $ (نسخه زنبور عسل)». برای قرار دادن یک handler در مخزن، دستور "bee push" و برای اتصال یک نسخه، "bee tag" پیشنهاد شده است.
منبع: opennet.ru