Backing up 3scale API Management by using OADP
You can back up Red Hat 3scale API Management components by backing up the 3scale operator, and databases such as MySQL and Redis.
-
You installed and configured Red Hat 3scale API Management. For more information, see Installing 3scale API Management on OpenShift and Red Hat 3scale API Management.
Creating the Data Protection Application
You can create a Data Protection Application (DPA) custom resource (CR) for Red Hat 3scale API Management.
-
Create a YAML file with the following configuration:
Exampledpa.yamlfileapiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: dpa-sample namespace: openshift-adp spec: configuration: velero: defaultPlugins: - openshift - aws - csi resourceTimeout: 10m nodeAgent: enable: true uploaderType: kopia backupLocations: - name: default velero: provider: aws default: true objectStorage: bucket: <bucket_name> prefix: <prefix> config: region: <region> profile: "default" s3ForcePathStyle: "true" s3Url: <s3_url> credential: key: cloud name: cloud-credentials- Specify a bucket as the backup storage location. If the bucket is not a dedicated bucket for Velero backups, you must specify a prefix.
- Specify a prefix for Velero backups, for example, velero, if the bucket is used for multiple purposes.
- Specify a region for backup storage location.
- Specify the URL of the object store that you are using to store backups.
-
Create the DPA CR by running the following command:
$ oc create -f dpa.yaml
Backing up the 3scale API Management operator, secret, and APIManager
You can back up the Red Hat 3scale API Management operator resources, and both the Secret and APIManager custom resource (CR).
-
You created the Data Protection Application (DPA).
-
Back up your 3scale operator CRs, such as
operatorgroup,namespaces, andsubscriptions, by creating a YAML file with the following configuration:Examplebackup.yamlfileapiVersion: velero.io/v1 kind: Backup metadata: name: operator-install-backup namespace: openshift-adp spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: false includedNamespaces: - threescale includedResources: - operatorgroups - subscriptions - namespaces itemOperationTimeout: 1h0m0s snapshotMoveData: false ttl: 720h0m0s- The value of the
metadata.nameparameter in the backup is the same value used in themetadata.backupNameparameter used when restoring the 3scale operator. - Namespace where the 3scale operator is installed.
Note
You can also back up and restore
ReplicationControllers,Deployment, andPodobjects to ensure that all manually set environments are backed up and restored. This does not affect the flow of restoration.
- The value of the
-
Create a backup CR by running the following command:
$ oc create -f backup.yamlExample outputbackup.velero.io/operator-install-backup created -
Back up the
SecretCR by creating a YAML file with the following configuration:Examplebackup-secret.yamlfileapiVersion: velero.io/v1 kind: Backup metadata: name: operator-resources-secrets namespace: openshift-adp spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: false includedNamespaces: - threescale includedResources: - secrets itemOperationTimeout: 1h0m0s labelSelector: matchLabels: app: 3scale-api-management snapshotMoveData: false snapshotVolumes: false ttl: 720h0m0s- The value of the
metadata.nameparameter in the backup is the same value used in themetadata.backupNameparameter used when restoring theSecret.
- The value of the
-
Create the
Secretbackup CR by running the following command:$ oc create -f backup-secret.yamlExample outputbackup.velero.io/operator-resources-secrets created -
Back up the APIManager CR by creating a YAML file with the following configuration:
Example backup-apimanager.yaml fileapiVersion: velero.io/v1 kind: Backup metadata: name: operator-resources-apim namespace: openshift-adp spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: false includedNamespaces: - threescale includedResources: - apimanagers itemOperationTimeout: 1h0m0s snapshotMoveData: false snapshotVolumes: false storageLocation: ts-dpa-1 ttl: 720h0m0s volumeSnapshotLocations: - ts-dpa-1- The value of the
metadata.nameparameter in the backup is the same value used in themetadata.backupNameparameter used when restoring the APIManager.
- The value of the
-
Create the APIManager CR by running the following command:
$ oc create -f backup-apimanager.yamlExample outputbackup.velero.io/operator-resources-apim created
Backing up a MySQL database
You can back up a MySQL database by creating and attaching a persistent volume claim (PVC) to include the dumped data in the specified path.
-
You have backed up the Red Hat 3scale API Management operator.
-
Create a YAML file with the following configuration for adding an additional PVC:
Examplets_pvc.yamlfilekind: PersistentVolumeClaim apiVersion: v1 metadata: name: example-claim namespace: threescale spec: accessModes: - ReadWriteOnce resources: requests: storage: 1Gi storageClassName: gp3-csi volumeMode: Filesystem -
Create the additional PVC by running the following command:
$ oc create -f ts_pvc.yml -
Attach the PVC to the system database pod by editing the
system-mysqldeployment to use the MySQL dump:$ oc edit deployment system-mysql -n threescalevolumeMounts: - name: example-claim mountPath: /var/lib/mysqldump/data - name: mysql-storage mountPath: /var/lib/mysql/data - name: mysql-extra-conf mountPath: /etc/my-extra.d - name: mysql-main-conf mountPath: /etc/my-extra ... serviceAccount: amp volumes: - name: example-claim persistentVolumeClaim: claimName: example-claim ...- The PVC that contains the dumped data.
-
Create a YAML file with following configuration to back up the MySQL database:
Examplemysql.yamlfileapiVersion: velero.io/v1 kind: Backup metadata: name: mysql-backup namespace: openshift-adp spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: true hooks: resources: - name: dumpdb pre: - exec: command: - /bin/sh - -c - mysqldump -u $MYSQL_USER --password=$MYSQL_PASSWORD system --no-tablespaces > /var/lib/mysqldump/data/dump.sql container: system-mysql onError: Fail timeout: 5m includedNamespaces: - threescale includedResources: - deployment - pods - replicationControllers - persistentvolumeclaims - persistentvolumes itemOperationTimeout: 1h0m0s labelSelector: matchLabels: app: 3scale-api-management threescale_component_element: mysql snapshotMoveData: false ttl: 720h0m0s- The value of the
metadata.nameparameter in the backup is the same value used in themetadata.backupNameparameter used when restoring the MySQL database. - A directory where the data is backed up.
- Resources to back up.
- The value of the
-
Back up the MySQL database by running the following command:
$ oc create -f mysql.yamlExample outputbackup.velero.io/mysql-backup created
-
Verify that the MySQL backup is completed by running the following command:
$ oc get backups.velero.io mysql-backup -o yamlExample outputstatus: completionTimestamp: "2025-04-17T13:25:19Z" errors: 1 expiration: "2025-05-17T13:25:16Z" formatVersion: 1.1.0 hookStatus: {} phase: Completed progress: {} startTimestamp: "2025-04-17T13:25:16Z" version: 1
Backing up the back-end Redis database
You can back up the Redis database by adding the required annotations and by listing which resources to back up using the includedResources parameter.
-
You backed up the Red Hat 3scale API Management operator.
-
You backed up your MySQL database.
-
The Redis queues have been drained before performing the backup.
-
Edit the annotations on the
backend-redisdeployment by running the following command:$ oc edit deployment backend-redis -n threescaleannotations: post.hook.backup.velero.io/command: >- ["/bin/bash", "-c", "redis-cli CONFIG SET auto-aof-rewrite-percentage 100"] pre.hook.backup.velero.io/command: >- ["/bin/bash", "-c", "redis-cli CONFIG SET auto-aof-rewrite-percentage 0"] -
Create a YAML file with the following configuration to back up the Redis database:
Exampleredis-backup.yamlfileapiVersion: velero.io/v1 kind: Backup metadata: name: redis-backup namespace: openshift-adp spec: csiSnapshotTimeout: 10m0s defaultVolumesToFsBackup: true includedNamespaces: - threescale includedResources: - deployment - pods - replicationcontrollers - persistentvolumes - persistentvolumeclaims itemOperationTimeout: 1h0m0s labelSelector: matchLabels: app: 3scale-api-management threescale_component: backend threescale_component_element: redis snapshotMoveData: false snapshotVolumes: false ttl: 720h0m0s- The value of the
metadata.nameparameter in the backup is the same value used in themetadata.backupNameparameter used when restoring the restoring the Redis database.
- The value of the
-
Back up the Redis database by running the following command:
$ oc create -f redis-backup.yamlExample outputbackup.velero.io/redis-backup created
-
Verify that the Redis backup is completed by running the following command:
$ oc get backups.velero.io redis-backup -o yamlExample outputstatus: completionTimestamp: "2025-04-17T13:25:19Z" errors: 1 expiration: "2025-05-17T13:25:16Z" formatVersion: 1.1.0 hookStatus: {} phase: Completed progress: {} startTimestamp: "2025-04-17T13:25:16Z" version: 1