# ServiceDefinition: vm-demo — the Phase-5 IaaS proof workload (R-PLAT-03, ADR-0005). # Source of truth: spec docs/06-vm-workloads-kubevirt.md + docs/13 (`kind: vm` path). # # A small headless Fedora Cloud VM, imported via CDI onto a Longhorn-backed disk, managed entirely # through the same Kubernetes surface as containers. It proves the escape hatch is real, not theoretical # (docs/06): the SAME declarative surface yields compute + a Longhorn disk that survives rebuild # (R-STATE-01), default-deny networking (reaches only DNS — no `dependencies`), and in-guest auto-updates # on a schedule (docs/11 §3 — dnf-automatic via cloud-init; no human step). Validates against # schemas/servicedefinition.schema.json. The rendered VirtualMachine + DataVolume are in # conformance/tests/l2-behavioral/vm-lifecycle/fixtures/vm.yaml (also the runbook's apply target). name: vm-demo kind: vm # IaaS via KubeVirt (R-PLAT-03), not a container source: # CDI import source: a KubeVirt containerdisk of Fedora Cloud (has cloud-init + dnf). CDI imports it # onto the Longhorn PVC below, so the VM disk inherits 3-replica durability + backup (docs/04). vmTemplate: quay.io/containerdisks/fedora:41 exposure: internal # LAN-only; no north-south HTTP surface for this proof (docs/09) egress: internet # default WAN egress. (An egress: vpn VM is a documented follow-up — # the Cilium Egress Gateway steering keys on the pod label, which # KubeVirt propagates from the VMI to its virt-launcher pod. ADR-0015.) storage: - name: rootdisk size: 6Gi class: longhorn # CDI-imported root disk on the replicated tier; survives destroy/rebuild dependencies: [] # default-deny: reaches only DNS (docs/03). Proven by the vm-default-deny test. update: channel: stable # in-guest dnf-automatic on `cadence` (renderer-contract §update, vm kind) cadence: "0 4 * * *" # nightly guest package updates — no human/AI/GitOps edit (R-UPD-01) autoRollbackOnFailedHealth: true observability: metrics: true # platform scrapes KubeVirt/virt metrics for this VM (docs/10) slis: - up backup: policy: daily-offcluster # the VM's Longhorn disk is backed up off-cluster (docs/04; R-STATE-03)