Migrate an App from one cluster to another
Velero’s backup and restore capabilities make it a valuable tool for migrating your data between clusters. This section describes how to migrate apps(s) from one cluster to another by creating a backup of the app in Object storage from one cluster and then restoring the app from the same object storage to another cluster. .
Backup from first cluster
Prerequisites on Cluster 1
-
Trident must be installed on the cluster.
-
A trident backend and Storage class must be created.
-
OADP operator must be installed on the cluster.
-
The DataProtectionApplication should be configured.
Use the following spec to configure the DataProtectionApplication object.
spec: backupLocations: - velero: config: insecureSkipTLSVerify: 'false' profile: default region: us-east-1 s3ForcePathStyle: 'true' s3Url: 'https://10.61.181.161' credential: key: cloud name: ontap-s3-credentials default: true objectStorage: bucket: velero caCert: <base-64 encoded tls certificate> prefix: container-backup provider: aws configuration: nodeAgent: enable: true uploaderType: kopia velero: defaultPlugins: - csi - openshift - aws - kubevirt
-
Create an application on the cluster and take a backup of this application.
As an example, install a postgres application.
-
Use the following spec for the backup CR:
spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: false includedNamespaces: - postgresql itemOperationTimeout: 4h0m0s snapshotMoveData: true storageLocation: velero-sample-1 ttl: 720h0m0s
You can click on the All instances tab to see the different objects being created and moving through different phases to finally come to the backup completed phase.
A backup of the resources in the namespace postgresql will be stored in the Object Storage location (ONTAP S3) specified in the backupLocation in the OADP spec.
Restore to a second cluster
Prerequisites on Cluster 2
-
Trident must be installed on cluster 2.
-
The postgresql app must NOT be already installed in the postgresql namespace.
-
OADP operator must be installed on cluster 2, and the BackupStorage Location must be pointing to the same object storage location where the backup was stored from the first cluster.
-
The Backup CR must be visible from the second cluster.
Restore the app on this cluster from the backup. Use the following yaml to create the Restore CR.
apiVersion: velero.io/v1 kind: Restore apiVersion: velero.io/v1 metadata: name: restore namespace: openshift-adp spec: backupName: backup restorePVs: true
When the restore is completed, you will see that the postgresql app is running on this cluster and is associated with the pvc and a corresponding pv. The state of the app is the same as when the backup was taken.