
firecracker v1.17.0
サーバーレスコンピューティングのための、セキュアで高速なマイクロVM。
私たちの使命は、セキュアでマルチテナント、最小オーバーヘッドのコンテナおよび関数ワークロードの実行を可能にすることです。
Firecracker Charter の詳細はこちらをご覧ください。
Firecrackerとは?
Firecrackerは、サーバーレス運用モデルを提供するセキュアなマルチテナントのコンテナおよび関数ベースのサービスを作成・管理するために特化して設計された、オープンソースの仮想化技術です。Firecrackerは、microVMと呼ばれる軽量仮想マシンでワークロードを実行します。microVMは、ハードウェア仮想化技術が提供するセキュリティと分離の特性と、コンテナの速度と柔軟性を組み合わせたものです。
概要
Firecrackerの主要コンポーネントは、Linux Kernel Virtual Machine (KVM) を使用してmicroVMを作成・実行する仮想マシンモニター (VMM) です。Firecrackerはミニマリスト設計を採用しています。不要なデバイスやゲスト向け機能を排除することで、各microVMのメモリフットプリントと攻撃対象領域を削減しています。これにより、セキュリティが向上し、起動時間が短縮され、ハードウェア利用率が向上します。Firecrackerはコンテナランタイムにも統合されており、例えば Kata Containers や Flintlock があります。
Firecrackerは、AWS Lambda や AWS Fargate などのサービスの速度と効率を向上させるために、Amazon Web Servicesで開発されました。FirecrackerはApache バージョン 2.0のもとでオープンソース化されています。
Firecrackerの詳細については、firecracker-microvm.io をご覧ください。
はじめに
Firecrackerを使い始めるには、最新のリリースバイナリをダウンロードするか、ソースからビルドしてください。
Docker(開発コンテナを使用)とbashがインストールされているUnix/Linuxシステムであれば、以下のようにFirecrackerをビルドできます:
git clone https://github.com/firecracker-microvm/firecracker
cd firecracker
tools/devtool build
toolchain="$(uname -m)-unknown-linux-musl"
Firecrackerバイナリは build/cargo_target/${toolchain}/debug/firecracker に配置されます。ビルド、テスト、実行の詳細については、クイックスタートガイドをご覧ください。
Firecracker microVMの全体的なセキュリティ(安全なマルチテナントコンピューティングの基準を満たす能力を含む)は、適切に構成されたLinuxホストオペレーティングシステムに依存します。この基準を満たすと考えられる構成は、本番ホストセットアップドキュメントに含まれています。
コントリビューション
FirecrackerはすでにAWS内で本番ワークロードを実行していますが、ミッションに導かれた旅のまだDay 1です。構築すべきことはまだ多く、すべてのコントリビューションを歓迎します。
Firecrackerへのコントリビューションについては、はじめにガイドの開発環境セットアップセクションと、Firecrackerのコントリビューションガイドラインをご確認ください。
リリース
新しいFirecrackerバージョンは、GitHubリポジトリのリリースページから、通常2〜3ヶ月ごとにリリースされます。変更履歴はチェンジログに記録されています。
Firecrackerのリリースポリシーはこちらに詳しく記載されています。
設計
Firecrackerの全体的なアーキテクチャは設計ドキュメントに記載されています。
機能と能力
Firecrackerは単一のマイクロ仮想マシンモニタープロセスで構成され、起動するとホストにAPIエンドポイントを公開します。APIはOpenAPI形式で仕様化されています。APIドキュメントで詳細をご覧ください。
APIエンドポイントは以下の用途に使用できます:
- microVMの構成:
- vCPU数の設定(デフォルトは1)。
- メモリサイズの設定(デフォルトは128 MiB)。
- CPUテンプレートの構成。
- microVMへの1つ以上のネットワークインターフェースの追加。
- microVMへの1つ以上の読み書きまたは読み取り専用ディスクの追加(各ディスクはファイルバッキングブロックデバイスで表されます)。
- ゲスト実行中のブロックデバイスの再スキャンのトリガー。これにより、ゲストOSはブロックデバイスのバッキングファイルのサイズ変更を認識できます。
- ゲスト起動前または起動後に、ブロックデバイスのバッキングファイルを変更。
- virtioデバイス用のレートリミッターの構成(帯域幅、1秒あたりの操作数、またはその両方を制限可能)。
- ロギングおよびメトリクスシステムの構成。
[BETA]ゲスト向けメタデータサービスのデータツリーの構成。このリソースが構成されている場合のみ、サービスはゲストに利用可能になります。- microVMへのvsockソケットの追加。
- microVMへのエントロピーデバイスの追加。
- microVMへのpmemデバイスの追加。
- メモリホットプラグの構成と管理。
[Developer Preview]VM実行中のvirtio PCIデバイスのホットプラグおよびホットアンプラグ。- 指定されたカーネルイメージ、ルートファイルシステム、およびブート引数を使用したmicroVMの起動。
- [x86_64のみ] microVMの停止。
組み込み機能:
- デマンドフォールトページングとCPUオーバーサブスクリプションがデフォルトで有効。
- セキュリティ強化のための高度なスレッド固有seccompフィルター。
- 本番シナリオでFirecrackerを起動するためのJailerプロセス。cgroup/namespace分離バリアを適用し、その後特権をドロップします。
テスト済みプラットフォーム
以下のすべての組み合わせをテストしています:
| インスタンス | ホストOSとカーネル | ゲストRootfs | ゲストカーネル |
|---|---|---|---|
| m5n.metal (Intel Cascade Lake) | al2 linux_5.10 | ubuntu 24.04 | linux_5.10 |
| m6i.metal (Intel Ice Lake) | al2023 linux_6.1 | linux_6.1 | |
| al2023 linux_6.18 | |||
| m7i.metal-24xl (Intel Sapphire Rapids) | |||
| m7i.metal-48xl (Intel Sapphire Rapids) | |||
| m8i.metal-48xl (Intel Granite Rapids)* | |||
| m8i.metal-96xl (Intel Granite Rapids)* | |||
| m6a.metal (AMD Milan) | |||
| m7a.metal-48xl (AMD Genoa) | |||
| m6g.metal (Graviton 2) | |||
| m7g.metal (Graviton 3) | |||
| m8g.metal-24xl (Graviton 4) | |||
| m8g.metal-48xl (Graviton 4) | |||
| m9g.metal-48xl (Graviton 5) |
*: AWS EC2 第8世代 Intel (*8i) インスタンスは、6.1または6.18ホストカーネルを使用する場合にのみサポートしています。これは、5.10でのGranite Rapids CPUのカーネルサポートが不十分なためです。
既知の問題と制限事項
- aarch64の
pl031RTCデバイスは割り込みをサポートしていないため、RTCアラームを使用するゲストプログラム(例:hwclock)は動作しません。
パフォーマンス
Firecrackerのパフォーマンス特性は、仕様ドキュメントの一部として記載されています。すべての仕様は、サーバーレス運用モデルでのコンテナおよび関数ワークロードのサポートへのコミットメントの一部であり、継続的インテグレーションテストを通じて実施されています。
セキュリティ開示ポリシー
Firecrackerのセキュリティは最優先事項です。脆弱性を発見したと思われる場合は、セキュリティポリシードキュメントに記載されているように、非公開でご連絡ください。開示内容を直ちに優先して対応します。
FAQと連絡先
よくある質問はFAQドキュメントにまとめられています。
Firecrackerコミュニティには以下の方法で連絡できます:
- セキュリティ関連の問題については、セキュリティポリシードキュメントをご覧ください。
- Slackワークスペースでチャット 注:メンテナーのほとんどはヨーロッパのタイムゾーンにいます。
- このリポジトリでGitHub issueを開く。
- メンテナーにメールで連絡: [email protected]
Firecrackerコミュニティ内でコミュニケーションする際は、行動規範にご留意ください。