OpenShift VM

OpenShift VM resources represent the OpenShift Virtualization virtual machines of an OpenShift cluster. The OpenShift integration backs them up and restores them, with their disks, through the openshift+vm protocol.

The snapshot of the virtual machine is taken by OpenShift Virtualization, so no VolumeSnapshotClass needs to be configured. The disk contents are then read, and written back on restore, through a data mover pod started in the namespace of the virtual machine and deleted when the operation ends. The pod pulls its image from ghcr.io/plakarkorp/kubelet by default. A cluster that cannot reach ghcr.io needs the image from another registry, set with Kubelet Image. See disconnected clusters for how to mirror it.

The kubeconfig used by the app must grant the permissions required by the operation. The roles in the Kubernetes RBAC guide apply to OpenShift as well. Source apps use the VM backup role and destination apps use the VM restore role. When Plakar runs outside the cluster, both also need the port forwarding role.

Inventory Management

Managed inventories discover virtual machines automatically once the OpenShift inventory is connected to a cluster with OpenShift Virtualization installed.

Backup flow

flowchart TD
  subgraph OpenShift["OpenShift Cluster"]
    VM["Virtual machine"]
    Snap["OpenShift Virtualization
snapshot"] Mover["Data mover pod"] end subgraph Plakar["Plakar Control Plane"] Source["OpenShift VM
Source app"] Backup["Backup process
Encrypt & deduplicate"] end Store["Kloset Store"] VM --> Snap Snap --> Mover Mover -->|"reads disk data"| Source Source --> Backup Backup --> Store

Restore flow

flowchart TD
  Store["Kloset Store"]

  subgraph Plakar["Plakar Control Plane"]
    Destination["OpenShift VM
Destination app"] Restore["Restore process"] end subgraph OpenShift["OpenShift Cluster"] Mover["Data mover pod"] VM["Restored
virtual machine"] end Store --> Restore Destination --> Restore Restore -->|"writes via"| Mover Mover --> VM

Shared Configuration

The following settings are available when configuring both source and destination apps.

  • Kubeconfig: Paste the contents of a kubeconfig. Leave it empty when Plakar Control Plane runs inside the cluster to use the in-cluster credentials. The kubeconfig can also be loaded from a secret provider.
  • Kubelet Image: Optional. The image of the data mover pod. Set it to pull the image from a registry the cluster can reach.
  • Node Affinity: Optional. Node affinity of the data mover pod, as the YAML or JSON body of a pod’s spec.affinity.nodeAffinity.