kubevirt-vm-migration-platform

Architecture Decision Records (ADRs)

ADR Decision Status Evidence
001 Local nested ESXi as the migration source Accepted Stage 0 evidence index; Broadcom free-edition KB
002 AWS as the disposable, Terraform-built target (topology and instance family deferred) Accepted; applied in Stage 1I (Terraform build and verified destroy). Install automation not implemented (see the ADR’s post-implementation note) AWS nested virtualization docs; KubeVirt install requirements; Stage 1I record
003 Cold migration before warm; warm stays reference/study work Accepted; first cold migration completed in Stage 1I MTV 2.11 warm-migration docs; free ESXi API limits
004 Upstream KubeVirt + CDI as the VM destination; versions as a runtime-validated tuple Accepted; tuple validated at runtime in Stage 1I KubeVirt release notes, install docs; CDI releases / API reference; Stage 1I record
005 Custom Kubernetes controller owns the declarative migration workflow Accepted (implementation deferred; not implemented) Stage 0 CRD / controller / state-machine design
006 conversion-host-01 is the dedicated lab host for disk inspection, conversion and QEMU/KVM boot validation, separate from the source and learning VMs (target format and production conversion location not decided) Accepted Stage 1F and Stage 1G records
007 First KubeVirt target: self-managed kubeadm, single node, on one nested-virtualization EC2 instance (m8i.xlarge, ap-south-1, CentOS Stream 9, CRI-O 1.36, Kubernetes 1.36, KubeVirt v1.9.0, CDI v1.66.1); EKS deferred; not a production design Accepted (Stage 1H design); built and validated in Stage 1I, then destroyed Stage 1H record, sources E1 to E49; Stage 1I record
008 Pod network with masquerade binding, no Multus; the VMware IP 192.168.50.31 is not preserved; a NodePort Service provides the stable reachability Accepted (Stage 1H design); deployed and validated in Stage 1I, then removed Stage 1H record; KubeVirt interfaces and networks guide; Stage 1I record
009 EBS gp3 Block-mode RWO PVC filled by a CDI upload DataVolume; qcow2 in transit, raw at rest; not live-migratable Accepted (Stage 1H design); deployed and validated in Stage 1I, then removed through the designed lifecycle Stage 1H record; CDI upload, scratch space and block-volume docs; EBS CSI docs; Stage 1I record
010 Guest network remediation: netplan match by driver virtio_net with DHCP, applied offline to a disposable copy at conversion time Accepted (Stage 1H design); applied and validated in Stage 1I Stage 1G boot evidence; Stage 1H record; Stage 1I record

ADRs 001 to 005 were made in Stage 0 (2026-09-27) and clarified in the Stage 0 technical refinement. ADR 006 was added in Stage 1G (2026-09-28). ADRs 007 to 010 were added in Stage 1H (2026-09-28) as design decisions; nothing was provisioned at that time.

Implementation status (added 2026-10-15). Stage 1I (completed 2026-10-01) built the ADR 007 target with Terraform, applied ADRs 008 to 010 in the first cold migration, validated the result end to end, and then destroyed the temporary AWS environment. ADRs 007 to 010 each end with a Post-implementation validation section that links to the Stage 1I record. The original decision text, rationale and alternatives are kept unchanged. ADR 005 (custom controller) remains design only.