BumbleBee - eBPF プログラムの作成と配布を簡素化するツールキット

クラウド システム、マイクロサービス、分離コンテナ、サーバーレス コンピューティングを実行するための製品を開発する企業である Solo.io は、内部の特別な仮想マシンで実行される eBPF プログラムの準備、配布、起動を簡素化することを目的としたオープンソース ツールキットである BumbleBee を公開しました。 Linux カーネルを使用して、ネットワーク操作の処理、アクセスの制御、システムの監視を可能にします。 コードは Go で書かれており、Apache 2.0 ライセンスに基づいて配布されています。

BumbleBee を使用すると、eBPF プログラムを OCI (Open Container Initiative) 形式のコンテナ イメージとしてパッケージ化できるため、再コンパイルやユーザー空間で追加コンポーネントを使用することなく、任意のシステム上で実行できます。 eBPF ハンドラーからのデータの処理を含む、コア内の eBPF コードとの対話は、BumbleBee によって引き継がれます。BumbleBee は、このデータをメトリクス、ヒストグラム、またはログの形式で自動的にエクスポートします。これらのデータには、たとえば、カールユーティリティ。 提案されたアプローチにより、開発者は eBPF コードの作成に集中でき、ユーザー空間からのこのコードとの対話の整理、アセンブリ、カーネルへのロードに気を取られることがなくなります。

eBPF プログラムを管理するために、Docker スタイルの「bee」ユーティリティが提供されています。これを使用すると、外部リポジトリから目的の eBPF ハンドラーをすぐにダウンロードして、ローカル システム上で実行できます。 このツールキットを使用すると、選択したトピックの eBPF ハンドラー用のコード フレームワークを C で生成できます (現在、ネットワーク スタックおよびファイル システムへの呼び出しをインターセプトするネットワークおよびファイル操作のハンドラーのみがサポートされています)。 生成されたフレームワークに基づいて、開発者は興味のある機能を迅速に実装できます。

BCC (BPF Compiler Collection) とは異なり、BumbleBee は Linux カーネルの各バージョンのハンドラー コードを完全に再構築しません (BCC は、eBPF プログラムが起動されるたびに Clang を使用したオンザフライ コンパイルを使用します)。 移植性の問題を解決するために、CO-RE および libbpf ツールが開発されています。これにより、コードを XNUMX 回だけビルドして、ロードされたプログラムを現在のカーネルお​​よび 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」コマンドが提案されます。

出所: オープンネット.ru

コメントを追加します