// Module included in the following assemblies:
//
// * backup_and_restore/application_backup_and_restore/backing_up_and_restoring/backing-up-applications.adoc

:_mod-docs-content-type: PROCEDURE
[id="oadp-creating-backup-cr-doc"]
= Creating a Backup CR
include::_attributes/common-attributes.adoc[]
include::_attributes/attributes-openshift-dedicated.adoc[]
:context: backing-up-applications

toc::[]

[role="_abstract"]
Back up Kubernetes resources, internal images, and persistent volumes (PVs) by creating a `Backup` custom resource (CR). This helps you to protect your application data and configuration for disaster recovery.

.Prerequisites

* 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.

.Procedure

. Retrieve the `backupStorageLocations` CRs by entering the following command:

+
[source,terminal]
----
$ oc get backupstoragelocations.velero.io -n openshift-adp
----
+
[source,terminal]
----
NAMESPACE       NAME              PHASE       LAST VALIDATED   AGE   DEFAULT
openshift-adp   velero-sample-1   Available   11s              31m
----

. Create a `Backup` CR, as in the following example:
+
[source,yaml]
----
apiVersion: velero.io/v1
kind: Backup
metadata:
  name: <backup>
  labels:
    velero.io/storage-location: default
  namespace: openshift-adp
spec:
  hooks: {}
  includedNamespaces:
  - <namespace>
  includedResources: []
  excludedResources: []
  storageLocation: <velero-sample-1>
  ttl: 720h0m0s
  labelSelector:
    matchLabels:
      app: <label_1>
      app: <label_2>
      app: <label_3>
  orLabelSelectors:
  - matchLabels:
      app: <label_1>
      app: <label_2>
      app: <label_3>
----
+
where:

`<namespace>`:: Specifies an array of namespaces to back up.
`includedResources`:: Optional: Specifies 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.
`excludedResources`:: Optional: Specifies an array of resources to exclude from the backup. Resources might be shortcuts (for example, `po` for `pods`) or fully-qualified.
`<velero-sample-1>`:: Specifies the name of the `backupStorageLocations` CR.
`labelSelector`:: Specifies a map of {key,value} pairs of backup resources that have *all* the specified labels.
`orLabelSelectors`:: Specifies a 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`:
+
[source,terminal]
----
$ oc get backups.velero.io -n openshift-adp <backup> -o jsonpath='{.status.phase}'
----
