eBPFプログラムを手軽にコーディング、ビルドし、コンテナ形式にパッケージングしてシェアできる「Bumblebee」オープンソースで登場

Linuxカーネルのソースコードを変更することなく、カーネルの持つさまざまな機能をフックすることでカーネルに対してプラグインのように機能拡張を実現する技術「eBPF」が、昨年から急速に注目されはじめています。

参考:Google、Facebook、マイクロソフトらが、OSカーネルをプログラマブルに拡張できる「eBPF」の開発と発展を目指す「eBPF Foundation」を結成

そのeBPFを手軽にコーディング、ビルドし、コンテナ形式にパッケージングしてシェアできるツール「Bumblebee」がオープンソースで公開されました。

fig

開発しているのは、APIゲートウェイのGloo EdgeやサービスメッシュのGloo Meshなどの製品を展開しているSolo.ioです。

Bumblebeeは、起動していくつかの質問に答えると、目的に合致したeBPFのソースコードのテンプレートを生成してくれます。そのテンプレートを基にすることで、比較的容易にeBPFのアプリケーションを開発し、Bumblebeeでビルドすることが可能です。

ビルドされたeBPFのアプリケーションは、BumblebeeによってDockerコンテナの標準的な形式、すなわちOCIイメージとしてパッケージングされます。これにより、eBPFのアプリケーションをDockerコンテナと同様にコンテナレジストリに登録することで、eBPFアプリケーションの公開やシェアが簡単に実現されます。

ただしビルドされたeBPFアプリケーションのバイナリは、ターゲットとなるLinuxカーネルのバージョンに依存します。Linuxカーネルのバージョンが変わると動作が保証されなくなるのです。

というのも、eBPFから参照するLinuxカーネル内の構造体などは、Linuxカーネルのバージョンごとにアドレスや内容が変化する可能性があるからです。

これを解決し、eBPFアプリケーションをLinuxカーネルに対してポータブルにするのが「BPF Type Format (BTF)」と呼ばれる技術です。

これはeBPFに関するメタデータを持ち、eBPFアプリケーションがロードされる際に、Linuxカーネルに対してつねに適切な参照を持てるようにバイナリ内のマッピングを直接書き換えてくれます。

BumblebeeはこのBTFを用いて、パッケージングされたeBPFアプリケーションを実行するときに、適切に実行できるようにしてくれます。

eBPFはクラウドネイティブ関連でも今年、最も注目される動向の1つとされています。また、マイクロソフトもWindowsでeBPF互換機能を実装し始めることを明らかにしています。

参考:WindowsがまたLinuxを取り込む。マイクロソフト、Linuxカーネルが備える拡張機能「eBPF」互換機能をWindowsにもオープンソースで実装へ

そうしたなかで、いち早くeBPFのビルド、シェア、デプロイ、ランのツールチェーンを、Dockerコンテナの技術を用いて実現してくれるBumblebeeは、非常に注目のオープンソースだといえるでしょう。

https://www.youtube.com/embed/4js-blTUV1Q