- Created T026-practical-test task.yaml for MVP smoke testing - Added k8shost-server to flake.nix (packages, apps, overlays) - Staged all workspace directories for nix flake build - Updated flake.nix shellHook to include k8shost Resolves: T026.S1 blocker (R8 - nix submodule visibility)
3.6 KiB
3.6 KiB
FireCracker Backend Configuration Schema
Date: 2025-12-08
Task: T014 S1
Status: Design Complete
Environment Variables
Required
-
PLASMAVMC_FIRECRACKER_KERNEL_PATH: カーネルイメージのパス(vmlinux形式、x86_64)- 例:
/opt/firecracker/vmlinux.bin - デフォルト: なし(必須)
- 例:
-
PLASMAVMC_FIRECRACKER_ROOTFS_PATH: Rootfsイメージのパス(ext4形式)- 例:
/opt/firecracker/rootfs.ext4 - デフォルト: なし(必須)
- 例:
Optional
-
PLASMAVMC_FIRECRACKER_PATH: FireCrackerバイナリのパス- 例:
/usr/bin/firecracker - デフォルト:
/usr/bin/firecracker
- 例:
-
PLASMAVMC_FIRECRACKER_JAILER_PATH: Jailerバイナリのパス(セキュリティ強化のため推奨)- 例:
/usr/bin/jailer - デフォルト:
/usr/bin/jailer(存在する場合)
- 例:
-
PLASMAVMC_FIRECRACKER_RUNTIME_DIR: VMのランタイムディレクトリ- 例:
/var/run/plasmavmc/firecracker - デフォルト:
/var/run/plasmavmc/firecracker
- 例:
-
PLASMAVMC_FIRECRACKER_SOCKET_BASE_PATH: FireCracker API socketのベースパス- 例:
/tmp/firecracker - デフォルト:
/tmp/firecracker
- 例:
-
PLASMAVMC_FIRECRACKER_INITRD_PATH: Initrdイメージのパス(オプション)- 例:
/opt/firecracker/initrd.img - デフォルト: なし
- 例:
-
PLASMAVMC_FIRECRACKER_BOOT_ARGS: カーネルコマンドライン引数- 例:
"console=ttyS0 reboot=k panic=1 pci=off" - デフォルト:
"console=ttyS0"
- 例:
-
PLASMAVMC_FIRECRACKER_USE_JAILER: Jailerを使用するかどうか- 値:
"1"または"true"で有効化 - デフォルト:
"true"(jailerバイナリが存在する場合)
- 値:
Configuration Structure (Rust)
pub struct FireCrackerConfig {
/// FireCrackerバイナリのパス
pub firecracker_path: PathBuf,
/// Jailerバイナリのパス(オプション)
pub jailer_path: Option<PathBuf>,
/// VMのランタイムディレクトリ
pub runtime_dir: PathBuf,
/// FireCracker API socketのベースパス
pub socket_base_path: PathBuf,
/// カーネルイメージのパス(必須)
pub kernel_path: PathBuf,
/// Rootfsイメージのパス(必須)
pub rootfs_path: PathBuf,
/// Initrdイメージのパス(オプション)
pub initrd_path: Option<PathBuf>,
/// カーネルコマンドライン引数
pub boot_args: String,
/// Jailerを使用するかどうか
pub use_jailer: bool,
}
impl FireCrackerConfig {
/// 環境変数から設定を読み込む
pub fn from_env() -> Result<Self, Error> {
// 実装...
}
/// デフォルト設定を作成
pub fn with_defaults() -> Result<Self, Error> {
// 実装...
}
}
Configuration Resolution Order
- 環境変数から読み込み
- デフォルト値で補完
- 必須項目(kernel_path, rootfs_path)の検証
- バイナリパスの存在確認(オプション)
Example Usage
// 環境変数から設定を読み込む
let config = FireCrackerConfig::from_env()?;
// またはデフォルト値で作成(環境変数で上書き可能)
let config = FireCrackerConfig::with_defaults()?;
// FireCrackerBackendを作成
let backend = FireCrackerBackend::new(config);
Validation Rules
kernel_pathとrootfs_pathは必須firecracker_pathが存在することを確認(起動時に検証)jailer_pathが指定されている場合、存在することを確認(起動時に検証)runtime_dirは書き込み可能である必要があるsocket_base_pathの親ディレクトリは存在する必要がある