このプロジェクトについて

Firecracker は、サーバーレスの運用モデルを備えた、セキュアでマルチテナントなコンテナベースおよび関数ベースのサービスを構築・管理するために特化したオープンソースの仮想化技術です。マイクロVM と呼ばれる軽量な仮想マシン上でワークロードを実行し、ハードウェア仮想化のセキュリティと分離性を、コンテナの速度と柔軟性と組み合わせることを目指しています。 中核となるコンポーネントは、Linux カーネル仮想マシン (KVM) 上に構築された仮想マシンモニター (VMM) です。その設計は意図的に最小限に抑えられており、不要なデバイスやゲスト向け機能を排除することでメモリフットプリントと攻撃面を削減しています。これにより、セキュリティの向上、起動時間の短縮、ハードウェア利用率の向上がもたらされるとプロジェクトは述べています。Firecracker は Amazon Web Services で AWS Lambda や AWS Fargate などのサービスを支えるために開発され、Apache 2.0 ライセンスで公開されています。また、Kata Containers や Flintlock などのコンテナランタイムにも統合されています。 起動後、Firecracker はホストに対して OpenAPI 形式で指定された API エンドポイントを公開します。この API を通じて、ユーザーはマイクロVM の vCPU 数(デフォルトは 1)とメモリサイズ(デフォルトは 128 MiB)を設定し、CPU テンプレートを適用し、ネットワークインターフェースを接続し、読み書きまたは読み取り専用のファイルバッキングブロックデバイスを追加し、ゲスト実行中にブロックデバイスの再スキャンをトリガーし、起動前または起動後にブロックデバイスのバッキングファイルを交換し、virtio デバイスのレートリミッターを設定し、ロギングとメトリクスを構成し、vsock、エントロピー、pmem デバイスを追加し、メモリのホットプラグを管理し、(開発者プレビューでは)virtio PCI デバイスのホットプラグまたはホットアンプラグを行うことができます。マイクロVM はカーネルイメージ、ルートファイルシステム、ブート引数で起動されます。停止は x86_64 でのみサポートされています。組み込み機能には、デマンドフォールトページング、デフォルトでの CPU オーバーサブスクリプション、スレッド固有の seccomp フィルター、および本番デプロイメント向けに cgroup/namespace 分離を適用して特権を破棄する Jailer プロセスが含まれます。 開始するには、リリースバイナリをダウンロードするか、ソースからビルドします。ビルドには Docker と bash を備えた Unix/Linux システムが必要です。プロジェクトは開発コンテナと devtool ビルドコマンドを提供しており、バイナリは build/cargo_target の下に配置されます。ドキュメントには、クイックスタートガイド、本番ホストのセットアップ、設計、API リクエスト、CPU テンプレート、vsock、エントロピー、pmem、メモリホットプラグ、デバイスホットプラグ、Jailer の使用方法が含まれています。リリースは約 2 ~ 3 か月ごとに GitHub で公開され、変更ログと文書化されたリリースポリシーが付属しています。 プロジェクトは、Intel、AMD、Graviton ファミリーにわたる AWS EC2 メタルインスタンスを、さまざまなホストカーネル、ゲスト rootfs、ゲストカーネルでカバーするテスト済みプラットフォームマトリクスを公開しています。既知の制限として、aarch64 の pl031 RTC デバイスは割り込みをサポートしていないため、RTC アラーム(hwclock など)に依存するゲストプログラムは動作しません。パフォーマンス特性は仕様ファイルに文書化され、継続的インテグレーションテストを通じて検証されています。セキュリティ情報の開示は、プロジェクトのセキュリティポリシーに従って非公開で処理され、コミュニティへの連絡は Slack、GitHub の issue、電子メールで行うことができます。