BumbleBee - bộ công cụ giúp đơn giản hóa việc tạo và phân phối chương trình eBPF

Solo.io, một công ty phát triển các sản phẩm để chạy hệ thống đám mây, dịch vụ vi mô, vùng chứa biệt lập và điện toán không có máy chủ, đã xuất bản BumbleBee, một bộ công cụ nguồn mở nhằm đơn giản hóa việc chuẩn bị, phân phối và khởi chạy các chương trình eBPF chạy trong một máy ảo đặc biệt bên trong nhân Linux và cho phép xử lý các hoạt động mạng, kiểm soát truy cập và giám sát hệ thống. Mã được viết bằng Go và được phân phối theo giấy phép Apache 2.0.

BumbleBee cho phép đóng gói chương trình eBPF dưới dạng hình ảnh vùng chứa ở định dạng OCI (Sáng kiến ​​vùng chứa mở), có thể chạy trên bất kỳ hệ thống nào mà không cần biên dịch lại và sử dụng các thành phần bổ sung trong không gian người dùng. Tương tác với mã eBPF trong lõi, bao gồm việc xử lý dữ liệu đến từ trình xử lý eBPF, được BumbleBee đảm nhận, tự động xuất dữ liệu này dưới dạng số liệu, biểu đồ hoặc nhật ký, chẳng hạn như có thể truy cập bằng cách sử dụng tiện ích cuộn tròn. Cách tiếp cận được đề xuất cho phép nhà phát triển tập trung vào việc viết mã eBPF và không bị phân tâm khi tổ chức tương tác với mã này từ không gian người dùng, lắp ráp và tải vào kernel.

Để quản lý các chương trình eBPF, tiện ích “con ong” kiểu Docker được cung cấp, nhờ đó bạn có thể tải xuống ngay trình xử lý eBPF mà bạn quan tâm từ kho lưu trữ bên ngoài và chạy nó trên hệ thống cục bộ. Bộ công cụ này cho phép bạn tạo khung mã bằng C cho các trình xử lý eBPF của một chủ đề đã chọn (hiện tại chỉ hỗ trợ các trình xử lý cho các hoạt động mạng và tệp chặn các cuộc gọi đến hệ thống tệp và ngăn xếp mạng). Dựa trên khung được tạo, nhà phát triển có thể nhanh chóng triển khai chức năng mà mình quan tâm.

Không giống như BCC (Bộ sưu tập trình biên dịch BPF), BumbleBee không xây dựng lại hoàn toàn mã xử lý cho từng phiên bản của nhân Linux (BCC sử dụng trình biên dịch nhanh chóng bằng Clang mỗi khi chương trình eBPF được khởi chạy). Để giải quyết các vấn đề về tính di động, các công cụ CO-RE và libbpf đang được phát triển, cho phép bạn xây dựng mã chỉ một lần và sử dụng một trình tải phổ quát đặc biệt giúp điều chỉnh chương trình đã tải theo hạt nhân hiện tại và Định dạng loại BTF. BumbleBee là một tiện ích bổ sung cho libbpf và cung cấp các loại bổ sung để tự động giải thích và hiển thị dữ liệu nằm trong cấu trúc bản đồ eBPF tiêu chuẩn RingBuffer và HashMap.

Để xây dựng chương trình eBPF cuối cùng và lưu nó dưới dạng hình ảnh OCI, chỉ cần chạy lệnh “bee build file_with_code name:version” và chạy lệnh “bee run name:version”. Theo mặc định, các sự kiện nhận được từ trình xử lý sẽ được xuất ra cửa sổ đầu cuối, nhưng nếu cần, bạn có thể lấy dữ liệu bằng cách sử dụng tiện ích Curl hoặc wget tới cổng mạng được liên kết với trình xử lý. Trình xử lý có thể được phân phối thông qua các kho lưu trữ tương thích với OCI, chẳng hạn như để chạy trình xử lý bên ngoài từ kho lưu trữ ghcr.io (GitHub Container Register), bạn có thể chạy lệnh “bee run ghcr.io/solo-io/bumblebee/tcpconnect: $ (phiên bản con ong)”. Để đặt một trình xử lý vào kho lưu trữ, lệnh “bee push” được đề xuất và để liên kết một phiên bản, “bee tag”.

Nguồn: opennet.ru

Thêm một lời nhận xét