# Red Hat OpenShift

Storware Backup & Recovery supports backup for OpenShift using OADP in backup process.

{% hint style="info" %}
Prior to adding OpenShift as a new Hypervisor Manager, you must install the OADP operator, version 1.3 or higher, from the Operator Hub within the OpenShift cluster.
{% endhint %}

## Adding Openshift Hypervisor Manager

Log in to the web interface and add a new OpenShift Hypervisor Manager:

![](https://content.gitbook.com/content/0FWMFN0y1yUTAd3cSRaK/blobs/YnVYHjFMaDHT8iJFJezm/protecting_ve-containers-red_hat_openshift.png)

* **URL** - URL of the Openshift API e.g. `api.your.cluster.local:6443`
* **Username** - login of user with cluster-admin role
* **OADP project name** - project name where OADP Operator was installed (`openshift-adp` by default)
* **Storage class name for OADP** - specify storage class that will be used for OADP setup, if this field is empty, default storage class will be used (optional)

The Openshift Nodes should appear in Storware Backup & Recovery after indexing the cluster.

{% hint style="info" %}
**Note**:

* Metadata is backed up using OADP operator. All of the OADP resources required during backups and restores will be automatically created, such as: DataProtectionApplication, BackupStorageLocation, VolumeSnapshotLocation
* Persistent volumes are primarily backed up using volume snapshots providing crash consistency.
* Whether specific persistent volume can be snapshotted is determined by searching for existing VolumeSnapshotClass with a driver corresponding to the storage class of the persistent volume. Which means that if the storage class of the persistent volume does not use CSI driver or the proper volume snapshot class is not already present, export of this volume will be performed without snapshotting mechanism. Block volumes can be exported only with volume snapshots.
  {% endhint %}

### Persistent volumes restore

There are two ways of restoring the volume content.

* The user should deploy an automatic provisioner which will create persistent volumes dynamically. If Helm is installed, the setup is quick and easy <https://github.com/helm/charts/tree/master/stable/nfs-server-provisioner>.
* The user should manually create a pool of volumes. Storware Backup & Recovery will pick one of the available volumes to restore the content.

## **Limitations**

* Only backups of Deployments, DeploymentConfigs and StatefulSets (persistent volumes and metadata) are currently supported.
* If Storage Class used by volume do not support snapshots, all deployment pods will be paused during the backup operation - this is required to achieve consistent backup data.
* For a successful backup, Deployment/DeploymentConfig/StatefulSet should have an **app** label assigned appropriately.

## Supported features

**Supported backup strategies:** Helper pod, Ceph RBD

<table data-full-width="false"><thead><tr><th width="274"></th><th width="240">Helper pod</th></tr></thead><tbody><tr><td>Minimal version</td><td>4.17</td></tr><tr><td>The last snapshot is kept on the system for incremental backups</td><td>No ***</td></tr><tr><td>Access to OS required</td><td>No</td></tr><tr><td>Proxy VM required</td><td>No</td></tr></tbody></table>

<table data-header-hidden><thead><tr><th width="273"></th><th width="239">Helper pod</th></tr></thead><tbody><tr><td>Full backup</td><td>Supported</td></tr><tr><td>Incremental backup</td><td>Supported *</td></tr><tr><td>Synthetic backups</td><td>Not supported ***</td></tr><tr><td>File-level restore</td><td>Supported *</td></tr><tr><td>Volume exclusion</td><td>Supported</td></tr><tr><td>Quiesced snapshots</td><td>Not supported</td></tr><tr><td>Snapshots management</td><td>Not supported</td></tr><tr><td>Pre/post command execution</td><td>Supported **</td></tr><tr><td>Access to VM disk backup over iSCSI</td><td>Supported *</td></tr><tr><td>Name-based policy assignment</td><td>Supported</td></tr><tr><td>Tag-based policy assignment</td><td>Supported</td></tr><tr><td>Power-on after restore</td><td>Supported</td></tr><tr><td>StatfuSet</td><td>Supported</td></tr></tbody></table>

\* block Persistent Volumes only

\*\* Only 'post'

*\*\*\** A synthetic backup destination can be used, but this strategy only supports full backups

## Network requirements

**Connection URL:** `https://API_HOST:6443`

| Source            | Destination                   | Ports           | Description                         |
| ----------------- | ----------------------------- | --------------- | ----------------------------------- |
| Node              | API IP/FQDN                   | 6443/tcp        | API access                          |
| Openshift Workers | Node                          | 9000/tcp        | S3 connection for metadata transfer |
| Node              | Plugin helper pod (via route) | 30000-32767/tcp | data transfer                       |
