- 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)
118 lines
4.2 KiB
YAML
118 lines
4.2 KiB
YAML
id: T014
|
|
name: PlasmaVMC FireCracker backend
|
|
status: complete
|
|
goal: Implement FireCracker HypervisorBackend for lightweight microVM support
|
|
priority: P1
|
|
owner: peerA (strategy) + peerB (implementation)
|
|
created: 2025-12-08
|
|
depends_on: [T013]
|
|
|
|
context: |
|
|
PROJECT.md item 4 specifies PlasmaVMC should support multiple VM backends:
|
|
"KVM, FireCracker, mvisorなどなど"
|
|
|
|
T011 implemented KvmBackend with QMP lifecycle.
|
|
T012-T013 added tenancy and ChainFire persistence.
|
|
|
|
FireCracker offers:
|
|
- Faster boot times (< 125ms)
|
|
- Lower memory overhead
|
|
- Security-focused (minimal device model)
|
|
- Ideal for serverless/function workloads
|
|
|
|
This validates the HypervisorBackend trait abstraction from T005 spec.
|
|
|
|
acceptance:
|
|
- FireCrackerBackend implements HypervisorBackend trait
|
|
- Can create/start/stop/delete FireCracker microVMs via trait interface
|
|
- Uses FireCracker API socket (not QMP)
|
|
- Integration test (env-gated) proves lifecycle works
|
|
- VmService can select backend via config (kvm vs firecracker)
|
|
|
|
steps:
|
|
- step: S1
|
|
action: FireCracker integration research + design
|
|
priority: P0
|
|
status: complete
|
|
owner: peerB
|
|
completed: 2025-12-08
|
|
notes: |
|
|
Research FireCracker API (REST over Unix socket).
|
|
Design FireCrackerBackend struct and config.
|
|
Identify dependencies (firecracker binary, jailer).
|
|
deliverables:
|
|
- brief design note in task directory
|
|
- config schema for firecracker backend
|
|
evidence:
|
|
- design.md: FireCracker API調査、構造体設計、制限事項、実装アプローチ
|
|
- config-schema.md: 環境変数ベースの設定スキーマ、検証ルール
|
|
|
|
- step: S2
|
|
action: Implement FireCrackerBackend trait
|
|
priority: P0
|
|
status: complete
|
|
owner: peerB
|
|
completed: 2025-12-08
|
|
notes: |
|
|
Implement HypervisorBackend for FireCracker.
|
|
Handle socket communication, VM lifecycle.
|
|
Map VmConfig to FireCracker machine config.
|
|
deliverables:
|
|
- FireCrackerBackend in plasmavmc-firecracker crate
|
|
- Unit tests for backend capabilities and spec validation
|
|
evidence:
|
|
- plasmavmc/crates/plasmavmc-firecracker/: FireCrackerBackend実装完了
|
|
- FireCrackerClient: REST API over Unix socket実装
|
|
- 環境変数による設定実装完了
|
|
|
|
- step: S3
|
|
action: Backend selection in VmService
|
|
priority: P1
|
|
status: complete
|
|
owner: peerB
|
|
completed: 2025-12-08
|
|
notes: |
|
|
Add config/env to select hypervisor backend.
|
|
VmService instantiates correct backend based on config.
|
|
Default remains KVM for backwards compatibility.
|
|
deliverables:
|
|
- PLASMAVMC_HYPERVISOR env var (kvm|firecracker)
|
|
- VmService backend factory
|
|
evidence:
|
|
- plasmavmc/crates/plasmavmc-server/src/main.rs: FireCrackerバックエンド登録
|
|
- plasmavmc/crates/plasmavmc-server/src/vm_service.rs: PLASMAVMC_HYPERVISOR環境変数サポート
|
|
|
|
- step: S4
|
|
action: Env-gated integration test
|
|
priority: P1
|
|
status: complete
|
|
owner: peerB
|
|
completed: 2025-12-08
|
|
notes: |
|
|
Integration test for FireCracker lifecycle.
|
|
Requires firecracker binary and kernel image.
|
|
Gated by PLASMAVMC_FIRECRACKER_TEST=1.
|
|
deliverables:
|
|
- passing integration test
|
|
- evidence log
|
|
evidence:
|
|
- plasmavmc/crates/plasmavmc-firecracker/tests/integration.rs: 環境ゲート付き統合テスト実装完了
|
|
- integration-test-evidence.md: テスト実装詳細と実行手順、証拠ログ
|
|
- "テスト実行確認: cargo test --package plasmavmc-firecracker --test integration -- --ignored で正常にスキップされることを確認"
|
|
|
|
blockers: []
|
|
|
|
evidence:
|
|
- design.md: S1完了 - FireCracker統合設計ドキュメント
|
|
- config-schema.md: S1完了 - 設定スキーマ定義
|
|
- plasmavmc/crates/plasmavmc-firecracker/: S2完了 - FireCrackerBackend実装
|
|
- plasmavmc/crates/plasmavmc-server/: S3完了 - バックエンド選択機能
|
|
|
|
notes: |
|
|
FireCracker resources:
|
|
- https://github.com/firecracker-microvm/firecracker
|
|
- API: REST over Unix socket at /tmp/firecracker.socket
|
|
- Needs: kernel image, rootfs, firecracker binary
|
|
|
|
Risk: FireCracker requires specific kernel/rootfs setup.
|
|
Mitigation: Document prerequisites, env-gate tests.
|