BumbleBee - ชุดเครื่องมือเพื่อทำให้การสร้างและการเผยแพร่โปรแกรม eBPF ง่ายขึ้น

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 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

เพิ่มความคิดเห็น