BumbleBee - eBPF ပရိုဂရမ်များ ဖန်တီးခြင်းနှင့် ဖြန့်ဖြူးခြင်းကို ရိုးရှင်းစေရန် ကိရိယာအစုံ

Cloud စနစ်များ၊ မိုက်ခရိုဝန်ဆောင်မှုများ၊ သီးခြားကွန်တိန်နာများနှင့် ဆာဗာမဲ့ကွန်ပြူတာများအတွက် ထုတ်ကုန်များကို တီထွင်ထုတ်လုပ်သည့် ကုမ္ပဏီတစ်ခုဖြစ်သည့် Solo.io သည် အတွင်းပိုင်းရှိ အထူး virtual machine တစ်ခုတွင် လုပ်ဆောင်သည့် eBPF ပရိုဂရမ်များကို ရိုးရှင်းစေရန်အတွက် ပြင်ဆင်ခြင်း၊ ဖြန့်ဖြူးခြင်းနှင့် စတင်ခြင်းတို့ကို ရိုးရှင်းစေရန် ရည်ရွယ်သည့် BumbleBee ၏ open source toolkit ကို ထုတ်ဝေခဲ့သည်။ Linux kernel နှင့် network operations များကို လုပ်ဆောင်ခြင်း၊ ဝင်ရောက်ထိန်းချုပ်ခြင်းနှင့် စောင့်ကြည့်ခြင်းစနစ်များကို ခွင့်ပြုပါ။ ကုဒ်ကို Go တွင်ရေးထားပြီး Apache 2.0 လိုင်စင်အောက်တွင် ဖြန့်ဝေထားသည်။

BumbleBee သည် eBPF ပရိုဂရမ်တစ်ခုအား OCI (Open Container Initiative) ဖော်မတ်တွင် ကွန်တိန်နာပုံအဖြစ် ထုပ်ပိုးရန်နှင့် အသုံးပြုသူနေရာရှိ အပိုအစိတ်အပိုင်းများကို အသုံးပြုခြင်းမရှိဘဲ မည်သည့်စနစ်တွင်မဆို လုပ်ဆောင်နိုင်စေပါသည်။ eBPF ကိုင်တွယ်သူမှလာသော ဒေတာများကို လုပ်ဆောင်ခြင်းအပါအဝင် core ရှိ eBPF ကုဒ်နှင့် အပြန်အလှန် တုံ့ပြန်မှုကို BumbleBee မှ လွှဲပြောင်းရယူထားပြီး၊ ဥပမာအားဖြင့် ဝင်ရောက်ကြည့်ရှုနိုင်သည့် မက်ထရစ်များ၊ ဟစ်စတိုဂရမ်များ သို့မဟုတ် မှတ်တမ်းများပုံစံဖြင့် ဤဒေတာကို အလိုအလျောက် တင်ပို့ပေးပါသည်။ curl ရှိမှာပေါ့။ အဆိုပြုထားသောချဉ်းကပ်မှုသည် developer အား eBPF ကုဒ်ရေးသားခြင်းအပေါ် အာရုံစိုက်စေပြီး အသုံးပြုသူနေရာမှ၊ စုစည်းမှုနှင့် kernel အတွင်းသို့ ဤကုဒ်ဖြင့် အပြန်အလှန်တုံ့ပြန်မှုကို စုစည်းခြင်းဖြင့် အာရုံထွေပြားခြင်းမရှိဘဲ အာရုံပျံ့လွင့်စေပါသည်။

eBPF ပရိုဂရမ်များကို စီမံခန့်ခွဲရန်အတွက် Docker-style “bee” utility တစ်ခုကို ကမ်းလှမ်းထားပြီး၊ ၎င်းသည် သင်စိတ်ဝင်စားသော eBPF ကိုင်တွယ်သူကို ပြင်ပသိုလှောင်မှုတစ်ခုမှ ချက်ခြင်းဒေါင်းလုဒ်လုပ်ကာ ၎င်းကို ဒေသတွင်းစနစ်တွင် လုပ်ဆောင်နိုင်သည်။ ကိရိယာအစုံသည် ရွေးချယ်ထားသော ခေါင်းစဉ်တစ်ခု၏ eBPF ကိုင်တွယ်သူများအတွက် C တွင် ကုဒ်ဘောင်တစ်ခုကို ဖန်တီးနိုင်သည် (လက်ရှိတွင် network stack နှင့် ဖိုင်စနစ်များသို့ ခေါ်ဆိုမှုများကို ကြားဖြတ်ဟန့်တားသော ကွန်ရက်နှင့် ဖိုင်လုပ်ငန်းဆောင်တာများအတွက်သာ ကိုင်တွယ်ဆောင်ရွက်ပေးသည်)။ ထုတ်ပေးသည့်ဘောင်အပေါ်အခြေခံ၍ developer သည် သူစိတ်ဝင်စားသည့်လုပ်ဆောင်ချက်ကို လျင်မြန်စွာအကောင်အထည်ဖော်နိုင်သည်။

BCC (BPF Compiler Collection နှင့်မတူဘဲ) BumbleBee သည် Linux kernel ၏ဗားရှင်းတစ်ခုစီအတွက် ကိုင်တွယ်ကုဒ်ကို လုံး၀ပြန်လည်တည်ဆောက်ခြင်းမပြုပါ (BCC သည် eBPF ပရိုဂရမ်ကိုစတင်သည့်အချိန်တိုင်းတွင် Clang ကို အသုံးပြု၍ အွန်လိုင်းစုစည်းမှုကိုအသုံးပြုသည်)။ သယ်ဆောင်ရလွယ်ကူခြင်းဆိုင်ရာ ပြဿနာများကိုဖြေရှင်းရန်အတွက် CO-RE နှင့် libbpf ကိရိယာများသည် ကုဒ်ကိုတစ်ကြိမ်သာတည်ဆောက်နိုင်ပြီး လက်ရှိ kernel နှင့် BTF အမျိုးအစားဖော်မတ်သို့ လိုက်လျောညီထွေဖြစ်စေမည့် အထူး universal loader ကို အသုံးပြုခွင့်ပေးထားသည်။ BumbleBee သည် libbpf ၏ အပိုပရိုဂရမ်တစ်ခုဖြစ်ပြီး စံ eBPF မြေပုံတည်ဆောက်ပုံ RingBuffer နှင့် HashMap တွင်ရှိသော ဒေတာများကို အလိုအလျောက်ပြန်ဆိုခြင်းနှင့် ပြသခြင်းအတွက် နောက်ထပ်အမျိုးအစားများကို ပံ့ပိုးပေးပါသည်။

နောက်ဆုံး eBPF ပရိုဂရမ်ကို တည်ဆောက်ပြီး OCI ရုပ်ပုံအဖြစ် သိမ်းဆည်းရန်အတွက် "bee build file_with_code name:version" ဟူသော command ကို run ပြီး command "bee run name:version" ကို run လိုက်ပါ။ ပုံမှန်အားဖြင့်၊ handler မှလက်ခံရရှိသည့်ဖြစ်ရပ်များသည် terminal window သို့ output ဖြစ်လိမ့်မည်၊ သို့သော် လိုအပ်ပါက၊ handler နှင့်ချိတ်ဆက်ထားသော network port သို့ curl သို့မဟုတ် wget utilities ကိုအသုံးပြုခြင်းဖြင့် data ကို ရယူနိုင်ပါသည်။ ကိုင်တွယ်သူများကို OCI-သဟဇာတရှိသော သိုလှောင်ရာနေရာများမှတဆင့် ဖြန့်ဝေနိုင်သည်၊ ဥပမာအားဖြင့် ghcr.io သိုလှောင်မှု (GitHub Container Registry) မှ ပြင်ပကိုင်တွယ်သူအား လုပ်ဆောင်ရန်အတွက် သင်သည် “bee run ghcr.io/solo-io/bumblebee/tcpconnect ဟူသော command ကို run နိုင်ပါသည်။ $(bee version)"။ repository တွင် handler ကို နေရာချရန် "bee push" command ကို အဆိုပြုထားပြီး ဗားရှင်းတစ်ခုဖြစ်သည့် "bee tag" ကို ချိတ်ရန်။

source: opennet.ru

မှတ်ချက် Add