# Backup/Restore Using CSI snapshots
###### tags: `Documentation`
## Prerequisites
1. Make sure the OADP operator is installed:
```
make deploy
```
1. Create a credentials secret for AWS:
```
oc create secret generic cloud-credentials --namespace openshift-adp --from-file cloud=<CREDENTIALS_FILE_PATH>
```
3. Make sure your Velero CR is similar to this:
```
kind: Velero
apiVersion: oadp.openshift.io/v1alpha1
metadata:
name: example-velero
namespace: openshift-adp
spec:
olmManaged: false
backupStorageLocations:
- config:
profile: default
region: us-west-2
name: default
objectStorage:
bucket: my-bucket
prefix: velero
provider: aws
default: true
defaultVeleroPlugins:
- aws
- csi
- openshift
veleroFeatureFlags:
- EnableCSI
volumeSnapshotLocations:
- config:
profile: default
region: us-west-2
name: default
provider: aws
```
(Note: Your BSL region should be the same as your s3 bucket, and your VSL region should be your cluster's region.)
4. Install Velero:
```
oc create -n openshift-adp -f config/samples/oadp_v1alpha1_velero.yaml
```
5. Create VolumeSanpshot Class:

Click on volume snapshotClass and update the input as below
```
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: example-snapclass
labels:
velero.io/csi-volumesnapshot-class: 'true'
driver: ebs.csi.aws.com
deletionPolicy: Retain
```
## Create the Mssql deployment config:
```
oc create -f docs/examples/manifests/mssql-template.yaml
```
(Note: Update Persistent volume claim with storageClassName: gp2-csi instead default gp2)
This example will create the following resources:
* Namespace
* Secret
* Service
* Route
* PersistentVolumeClaim
* Deployment
## Verify application resources:
```
oc get all -n mssql-persistent
```
## Create application backup
```
velero backup create csi-testing --include-namespaces mssql-persistent -n openshift-adp
```
## Verify the backup is completed
```
velero backup describe csi-testing -n openshift-adp
```
should result in Completed
## Delete the application
Once we have ensured the backup is completed, we want to test the restore process. First, delete the mssql-persistent project:
```
oc delete namespace mssql-persistent
```
## Create the restore for the application
```
velero restore create --from-backup csi-testing -n openshift-adp
```
## Verify the restore is completed
```
velero restore describe <restore-name-generated-in-previous-step> -n openshift-adp
```
should result in Completed
## Verify all resources have been recreated in the restore process
```
oc get all -n mssql-persistent
```