$ oc get backupstoragelocations.velero.io -n openshift-adp
OADP for OpenShift Virtualization is a Technology Preview feature only. Technology Preview features are not supported with Red Hat production service level agreements (SLAs) and might not be functionally complete. Red Hat does not recommend using them in production. These features provide early access to upcoming product features, enabling customers to test functionality and provide feedback during the development process. For more information about the support scope of Red Hat Technology Preview features, see Technology Preview Features Support Scope. |
You back up virtual machines (VMs) by creating an OpenShift API for Data Protection (OADP) Backup
custom resource (CR).
The Backup
CR performs the following actions:
Backs up OpenShift Virtualization resources by creating an archive file on S3-compatible object storage, such as Multicloud Object Gateway, Noobaa, or Minio.
Backs up VM disks by using one of the following options:
Container Storage Interface (CSI) snapshots on CSI-enabled cloud storage, such as Ceph RBD or Ceph FS.
Backing up applications with File System Backup: Kopia or Restic on object storage.
OADP provides backup hooks to freeze the VM file system before the backup operation and unfreeze it when the backup is complete. The The |
You can add hooks to the Backup
CR to run commands on specific VMs before or after the backup operation.
You schedule a backup by creating a Schedule
CR instead of a Backup
CR.
To back up Kubernetes resources, internal images, and persistent volumes (PVs), create a Backup custom resource (CR).
You must install the OpenShift API for Data Protection (OADP) Operator.
The DataProtectionApplication
CR must be in a Ready
state.
Backup location prerequisites:
You must have S3 object storage configured for Velero.
You must have a backup location configured in the DataProtectionApplication
CR.
Snapshot location prerequisites:
Your cloud provider must have a native snapshot API or support Container Storage Interface (CSI) snapshots.
For CSI snapshots, you must create a VolumeSnapshotClass
CR to register the CSI driver.
You must have a volume location configured in the DataProtectionApplication
CR.
Retrieve the backupStorageLocations
CRs by entering the following command:
$ oc get backupstoragelocations.velero.io -n openshift-adp
NAMESPACE NAME PHASE LAST VALIDATED AGE DEFAULT
openshift-adp velero-sample-1 Available 11s 31m
Create a Backup
CR, as in the following example:
apiVersion: velero.io/v1
kind: Backup
metadata:
name: <backup>
labels:
velero.io/storage-location: default
namespace: openshift-adp
spec:
hooks: {}
includedNamespaces:
- <namespace> (1)
includedResources: [] (2)
excludedResources: [] (3)
storageLocation: <velero-sample-1> (4)
ttl: 720h0m0s
labelSelector: (5)
matchLabels:
app=<label_1>
app=<label_2>
app=<label_3>
orLabelSelectors: (6)
- matchLabels:
app=<label_1>
app=<label_2>
app=<label_3>
1 | Specify an array of namespaces to back up. |
2 | Optional: Specify an array of resources to include in the backup. Resources might be shortcuts (for example, 'po' for 'pods') or fully-qualified. If unspecified, all resources are included. |
3 | Optional: Specify an array of resources to exclude from the backup. Resources might be shortcuts (for example, 'po' for 'pods') or fully-qualified. |
4 | Specify the name of the backupStorageLocations CR. |
5 | Map of {key,value} pairs of backup resources that have all of the specified labels. |
6 | Map of {key,value} pairs of backup resources that have one or more of the specified labels. |
Verify that the status of the Backup
CR is Completed
:
$ oc get backups.velero.io -n openshift-adp <backup> -o jsonpath='{.status.phase}'
You back up persistent volumes with Container Storage Interface (CSI) snapshots by editing the VolumeSnapshotClass
custom resource (CR) of the cloud storage before you create the Backup
CR.
The cloud provider must support CSI snapshots.
You must enable CSI in the DataProtectionApplication
CR.
Add the metadata.labels.velero.io/csi-volumesnapshot-class: "true"
key-value pair to the VolumeSnapshotClass
CR:
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: <volume_snapshot_class_name>
labels:
velero.io/csi-volumesnapshot-class: "true" (1)
annotations:
snapshot.storage.kubernetes.io/is-default-class: true (2)
driver: <csi_driver>
deletionPolicy: <deletion_policy_type> (3)
1 | Must be set to true . |
2 | Must be set to true . |
3 | OADP supports the Retain and Delete deletion policy types for CSI and Data Mover backup and restore. For the OADP 1.2 Data Mover, set the deletion policy type to Retain . |
You can now create a Backup
CR.
You back up Kubernetes resources, internal images, and persistent volumes with Restic by editing the Backup
custom resource (CR).
You do not need to specify a snapshot location in the DataProtectionApplication
CR.
Restic does not support backing up |
You must install the OpenShift API for Data Protection (OADP) Operator.
You must not disable the default Restic installation by setting spec.configuration.restic.enable
to false
in the DataProtectionApplication
CR.
The DataProtectionApplication
CR must be in a Ready
state.
Edit the Backup
CR, as in the following example:
apiVersion: velero.io/v1
kind: Backup
metadata:
name: <backup>
labels:
velero.io/storage-location: default
namespace: openshift-adp
spec:
defaultVolumesToFsBackup: true (1)
...
1 | In OADP version 1.2 and later, add the defaultVolumesToFsBackup: true setting within the spec block. In OADP version 1.1, add defaultVolumesToRestic: true . |
You create backup hooks to run commands in a container in a pod by editing the Backup
custom resource (CR).
Pre hooks run before the pod is backed up. Post hooks run after the backup.
Add a hook to the spec.hooks
block of the Backup
CR, as in the following example:
apiVersion: velero.io/v1
kind: Backup
metadata:
name: <backup>
namespace: openshift-adp
spec:
hooks:
resources:
- name: <hook_name>
includedNamespaces:
- <namespace> (1)
excludedNamespaces: (2)
- <namespace>
includedResources: []
- pods (3)
excludedResources: [] (4)
labelSelector: (5)
matchLabels:
app: velero
component: server
pre: (6)
- exec:
container: <container> (7)
command:
- /bin/uname (8)
- -a
onError: Fail (9)
timeout: 30s (10)
post: (11)
...
1 | Optional: You can specify namespaces to which the hook applies. If this value is not specified, the hook applies to all namespaces. |
2 | Optional: You can specify namespaces to which the hook does not apply. |
3 | Currently, pods are the only supported resource that hooks can apply to. |
4 | Optional: You can specify resources to which the hook does not apply. |
5 | Optional: This hook only applies to objects matching the label. If this value is not specified, the hook applies to all namespaces. |
6 | Array of hooks to run before the backup. |
7 | Optional: If the container is not specified, the command runs in the first container in the pod. |
8 | This is the entrypoint for the init container being added. |
9 | Allowed values for error handling are Fail and Continue . The default is Fail . |
10 | Optional: How long to wait for the commands to run. The default is 30s . |
11 | This block defines an array of hooks to run after the backup, with the same parameters as the pre-backup hooks. |