# Red Hat Openshift Virtualization

Storware Backup & Recovery supports backup for OpenShift using OADP operator. Metadata of Virtual Machines is exported using OADP operator, volume data is exported using side pod using custom OpenShift Virtualization Plugin docker image. The backup supports both full and incremental types. Incremental backup does not require previous snapshots to remain in OpenShift.

{% 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/wUsKWUrceYHp8e9TJ00e/blobs/haBuTMCad9O5dW9UGUAI/protecting_ve-containers-red_hat_openshift.png)

* **URL** - URL of the Openshift API e.g. `api.your.cluster.local:6443`
* **Username** - login of a user with the 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.

### Using own image registry for OpenShift Virtualization Plugin

Storware Backup & Recovery use quay.io as default image registry for OpenShift Virtualization Plugin docker image. You can use your own registry to store the plugin image.

1. Download OpenShift Virtualization Plugin from [Storware repository](https://repo.storware.eu/storware/addons/).
2. Upload it to your image registry host.
3. Import image to your registry. Example:

   ```
   gunzip sbr-openshift-virtualization-plugin-jvm-x.x.x.x.tar.gz
   docker load -i sbr-openshift-virtualization-plugin-jvm-x.x.x.x.tar
   ```
4. Edit `/opt/vprotect/node.properties` file and change value for `openshift.virtualization.sidepod.image` parameter. Example:

   ```
   openshift.virtualization.sidepod.image=<Registry IP>:5000/sbr-openshift-virtualization-plugin:x.x.x.x
   ```
5. Restart vprotect-node service.

   ```
   systemctl restart vprotect-node
   ```

## **Limitations**

* For a successful backup, Virtual Machine should have an **app** label assigned appropriately.
* Hot-plugged disks are not supported.
* Backup of disks: CDROM and LUN is not supported.
* Storage class used for disk should support snapshots.

## Supported features

**Supported backup strategies:** Helper pod

<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>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>Always done by hypervisor</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>Not 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></tbody></table>

\* For Ceph RBD volumes, the last snapshot needs to be kept

\* Block Persistent Volumes only

## 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                       |
