BumbleBee - eBPF programlarının oluşturulmasını ve dağıtımını basitleştiren bir araç seti

Bulut sistemlerini, mikro hizmetleri, yalıtılmış konteynerleri ve sunucusuz bilişimi çalıştırmaya yönelik ürünler geliştiren bir şirket olan Solo.io, içindeki özel bir sanal makinede çalışan eBPF programlarının hazırlanmasını, dağıtımını ve başlatılmasını basitleştirmeyi amaçlayan açık kaynaklı bir araç seti olan BumbleBee'yi yayınladı. Linux çekirdeği ve ağ işlemlerinin işlenmesine, erişimin kontrol edilmesine ve sistemlerin izlenmesine izin verir. Kod Go'da yazılmıştır ve Apache 2.0 lisansı altında dağıtılmaktadır.

BumbleBee, bir eBPF programını OCI (Açık Konteyner Girişimi) formatında bir konteyner görüntüsü olarak paketlemeyi mümkün kılar; bu program, yeniden derlemeye ve kullanıcı alanında ek bileşenlerin kullanımına gerek kalmadan herhangi bir sistemde çalıştırılabilir. eBPF işleyicisinden gelen verilerin işlenmesi de dahil olmak üzere, çekirdekteki eBPF koduyla etkileşim, bu verileri otomatik olarak örneğin aşağıdakiler kullanılarak erişilebilen metrikler, histogramlar veya günlükler biçiminde dışa aktaran BumbleBee tarafından üstlenilir. kıvrılma yardımcı programı. Önerilen yaklaşım, geliştiricinin eBPF kodu yazmaya odaklanmasına ve bu kodla kullanıcı alanı, montaj ve çekirdeğe yükleme arasındaki etkileşimi organize ederek dikkatinin dağılmamasına olanak tanır.

EBPF programlarını yönetmek için, ilgilendiğiniz eBPF işleyicisini harici bir depodan hemen indirebileceğiniz ve yerel sistemde çalıştırabileceğiniz Docker tarzı bir "arı" yardımcı programı sunulur. Araç seti, seçilen bir konunun eBPF işleyicileri için C dilinde bir kod çerçevesi oluşturmanıza olanak tanır (şu anda yalnızca ağ yığınına ve dosya sistemlerine yapılan çağrıları engelleyen ağ ve dosya işlemlerine yönelik işleyiciler desteklenmektedir). Oluşturulan çerçeveye dayanarak geliştirici, ilgilendiği işlevselliği hızlı bir şekilde uygulayabilir.

BCC'den (BPF Derleyici Koleksiyonu) farklı olarak BumbleBee, Linux çekirdeğinin her sürümü için işleyici kodunu tamamen yeniden oluşturmaz (BCC, eBPF programı her başlatıldığında Clang'ı kullanarak anında derlemeyi kullanır). Taşınabilirlikle ilgili sorunları çözmek için, yalnızca bir kez kod oluşturmanıza ve yüklenen programı mevcut çekirdeğe ve BTF Tür Formatına uyarlayan özel bir evrensel yükleyici kullanmanıza olanak tanıyan CO-RE ve libbpf araçları geliştirilmektedir. BumbleBee, libbpf'e bir eklentidir ve standart eBPF harita yapıları RingBuffer ve HashMap'te bulunan verilerin otomatik olarak yorumlanması ve görüntülenmesi için ek türler sağlar.

Nihai eBPF programını oluşturmak ve onu bir OCI görüntüsü olarak kaydetmek için, "bee build file_with_code name:version" komutunu çalıştırmanız ve "bee run name:version" komutunu çalıştırmanız yeterlidir. Varsayılan olarak, işleyiciden alınan olaylar terminal penceresine aktarılacaktır, ancak gerekirse işleyiciye bağlı ağ bağlantı noktasına curl veya wget yardımcı programlarını kullanarak veri alabilirsiniz. İşleyiciler OCI uyumlu depolar aracılığıyla dağıtılabilir; örneğin, ghcr.io deposundan (GitHub Container Registry) harici bir işleyici çalıştırmak için “bee run ghcr.io/solo-io/bumblebee/tcpconnect” komutunu çalıştırabilirsiniz: $(arı versiyonu)”. Depoya bir işleyici yerleştirmek için "arı itme" komutu ve bir sürümü bağlamak için "arı etiketi" önerilir.

Kaynak: opennet.ru

Yorum ekle