- platform/kubevirt: pinned KubeVirt v1.9.0 + CDI v1.66.0 operators (remote bases); KubeVirt/CDI CRs tuned for Longhorn; useEmulation=true (prefer real KVM, emulate fallback). - Controllers/configs split (F-MON1): CRs + ServiceMonitors + alerts via platform-config. - Observability: ServiceMonitors, KubeVirt platform-health alerts (R-OBS-04), VM dashboard. - catalog/vm-demo.yaml (kind: vm) + rendered VirtualMachine/DataVolume fixture. - Conformance: vm-lifecycle (R-PLAT-03/04), vm-data-survival (R-STATE-01, L3), vm-default-deny (R-NET-01) — self-skipping until KubeVirt+longhorn exist. - ci/SPEC_PIN: adopt accepted spec b633b7f (ADR-0015 egress work already merged). - conformance/run.sh: document R-ENV-02/R-GITOPS-01 coverage gaps (WS-GITOPS/INFRA-owned). Co-Authored-By: Claude Opus 4.8 <[email protected]>
36 lines
2.3 KiB
YAML
36 lines
2.3 KiB
YAML
# 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)
|