Solo.io บริษัทผู้พัฒนาผลิตภัณฑ์สำหรับระบบคลาวด์ ไมโครเซอร์วิส คอนเทนเนอร์แบบแยกส่วน และการประมวลผลแบบไร้เซิร์ฟเวอร์ ได้เผยแพร่ชุดเครื่องมือโอเพนซอร์ส BumbleBee ซึ่งมีเป้าหมายเพื่อลดความซับซ้อนในการเตรียม การแจกจ่าย และการเรียกใช้โปรแกรม eBPF ที่ทำงานในเครื่องเสมือนพิเศษภายในเคอร์เนล Linux และเปิดใช้งานการประมวลผลการทำงานของเครือข่าย การควบคุมการเข้าถึง และการตรวจสอบระบบ โค้ดเขียนด้วยภาษา Go และเผยแพร่ภายใต้ใบอนุญาต Apache 2.0
BumbleBee ทำให้สามารถจัดทำแพ็คเกจโปรแกรม eBPF เป็นคอนเทนเนอร์อิมเมจในรูปแบบ OCI (Open Container Initiative) ซึ่งสามารถทำงานบนระบบใดก็ได้โดยไม่ต้องคอมไพล์ใหม่ และใช้ส่วนประกอบเพิ่มเติมในพื้นที่ผู้ใช้ การโต้ตอบกับรหัส eBPF ในแกนหลัก รวมถึงการประมวลผลข้อมูลที่มาจากตัวจัดการ eBPF จะถูกควบคุมโดย BumbleBee ซึ่งจะส่งออกข้อมูลนี้โดยอัตโนมัติในรูปแบบของตัวชี้วัด ฮิสโตแกรม หรือบันทึก ซึ่งสามารถเข้าถึงได้ เช่น โดยใช้ ยูทิลิตี้ขด แนวทางที่นำเสนอช่วยให้นักพัฒนามุ่งเน้นไปที่การเขียนโค้ด eBPF และไม่ถูกรบกวนโดยการจัดระเบียบการโต้ตอบกับโค้ดนี้จากพื้นที่ผู้ใช้ การประกอบ และการโหลดลงในเคอร์เนล
ในการจัดการโปรแกรม eBPF มีการเสนอยูทิลิตี้ "bee" สไตล์นักเทียบท่าซึ่งคุณสามารถดาวน์โหลดตัวจัดการ eBPF ที่สนใจได้ทันทีจากพื้นที่เก็บข้อมูลภายนอกและเรียกใช้บนระบบภายในเครื่อง ชุดเครื่องมือช่วยให้คุณสร้างโค้ดเฟรมเวิร์กในภาษา C สำหรับตัวจัดการ eBPF ของหัวข้อที่เลือก (ปัจจุบันรองรับเฉพาะตัวจัดการสำหรับการทำงานของเครือข่ายและไฟล์ที่ดักฟังการเรียกไปยังสแต็กเครือข่ายและระบบไฟล์เท่านั้น) ตามเฟรมเวิร์กที่สร้างขึ้น นักพัฒนาสามารถใช้ฟังก์ชันที่เขาสนใจได้อย่างรวดเร็ว
แตกต่างจาก BCC (BPF Compiler Collection) ตรงที่ BumbleBee ไม่ได้ทำการสร้างโค้ดแฮนด์เลอร์ใหม่ทั้งหมดสำหรับเคอร์เนลแต่ละเวอร์ชัน Linux (BCC ใช้การคอมไพล์แบบเรียลไทม์ด้วย Clang ทุกครั้งที่โปรแกรม eBPF ทำงาน) เพื่อแก้ไขปัญหาเรื่องความเข้ากันได้กับแพลตฟอร์มต่างๆ จึงมีการพัฒนาชุดเครื่องมือ CO-RE และ libbpf ซึ่งจะช่วยให้สามารถคอมไพล์โค้ดได้เพียงครั้งเดียว และใช้ตัวโหลดแบบสากลพิเศษที่ปรับโปรแกรมที่โหลดให้เข้ากับเคอร์เนลและประเภท BTF (BPF Type Format) ปัจจุบัน 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
