Skip to content

Snapshot

ImpVMSnapshot captures the state of a running ImpVM. Snapshots can be one-shot or scheduled, and stored on the node or in an OCI registry.

One-shot snapshot

yaml
apiVersion: imp.dev/v1alpha1
kind: ImpVMSnapshot
metadata:
  name: my-snap
  namespace: default
spec:
  sourceVMName: my-vm
  sourceVMNamespace: default
  storage:
    type: node-local
    nodeLocal:
      path: /var/lib/imp/snapshots
  retention: 3

Scheduled snapshot

yaml
spec:
  schedule: "0 2 * * *"   # daily at 02:00 UTC
  retention: 5
  storage:
    type: node-local
    nodeLocal:
      path: /var/lib/imp/snapshots

Elect a base snapshot

After a snapshot completes, elect one execution as the base image used by ImpWarmPool and ImpVMMigration:

bash
kubectl imp elect my-snap <child-execution-name>

Or declaratively:

yaml
spec:
  baseSnapshot: snap-2026-03-15-02-00

Verify

bash
kubectl get impvmsnapshot my-snap -n default -o yaml
kubectl get impvmsnapshot -n default -l imp.dev/snapshot-parent=my-snap

Storage backends

TypeWhen to use
node-localSingle-node or NFS-mounted path
oci-registryMulti-node sharing, OCI-compatible registry

OCI registry example

yaml
spec:
  storage:
    type: oci-registry
    ociRegistry:
      ref: ghcr.io/my-org/imp-snapshots/my-snap
      secretRef: ghcr-pull-secret