4.21. OADP 和 3scale
4.21.1. 使用 OADP 备份和恢复 3scale API 管理
使用红帽 3scale API 管理,您可以管理内部或外部用户的 API。您可以在内部、云端、托管服务或根据您的要求任意组合部署 3scale 组件。
使用 OpenShift API for Data Protection (OADP),您可以通过备份应用程序资源、持久性卷和配置来保护 3scale API 管理部署。
您可以使用 OpenShift API for Data Protection (OADP) Operator 来备份和恢复 3scale API 管理 on-cluster 存储数据库,而不影响正在运行的服务
您可以配置 OADP,以使用 3scale API 管理执行以下操作:
- 按照 备份 3scale API 管理 中的步骤创建 3scale 组件的备份。
- 请按照恢复 3scale API 管理 中的步骤来恢复 3scale 操作器 和部署的组件。
4.21.2. 使用 OADP 备份 3scale API 管理
您可以通过备份 3scale operator 和 MySQL 和 Redis 等数据库来备份 Red Hat 3scale API 管理组件。
先决条件
- 已安装并配置了 Red Hat 3scale API Management。如需更多信息,请参阅在 OpenShift 和 Red Hat 3scale API Management 上安装 3scale API 管理。
4.21.2.1. 创建数据保护应用程序
您可以为 Red Hat 3scale API Management 创建数据保护应用程序(DPA)自定义资源(CR)。
流程
- 使用以下配置创建 YAML 文件: - dpa.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 DPA CR: - oc create -f dpa.yaml - $ oc create -f dpa.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.21.2.2. 备份 3scale API 管理 operator、secret 和 APIManager
						您可以备份 Red Hat 3scale API Management operator 资源,以及 Secret 和 APIManager 自定义资源(CR)。
					
先决条件
- 您创建了数据保护应用程序 (DPA)。
流程
- 通过创建带有以下配置的 YAML 文件来备份 3scale operator CR,如 - operatorgroup、- 命名空间和订阅 :- backup.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 您还可以备份和恢复 - ReplicationController、- Deployment和- Pod对象,以确保所有手动设置环境都已备份和恢复。这不会影响恢复流。
- 运行以下命令来创建备份 CR: - oc create -f backup.yaml - $ oc create -f backup.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - backup.velero.io/operator-install-backup created - backup.velero.io/operator-install-backup created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过使用以下配置创建 YAML 文件来备份 - SecretCR:- backup-secret.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 备份中的metadata.name参数的值与恢复Secret时使用的metadata.backupName参数的值相同。
 
- 运行以下命令来创建 - Secret备份 CR:- oc create -f backup-secret.yaml - $ oc create -f backup-secret.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - backup.velero.io/operator-resources-secrets created - backup.velero.io/operator-resources-secrets created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过创建带有以下配置的 YAML 文件来备份 APIManager CR: - backup-apimanager.yaml 文件示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 备份中的metadata.name参数的值与恢复 APIManager 时使用的metadata.backupName参数的值相同。
 
- 运行以下命令来创建 APIManager CR: - oc create -f backup-apimanager.yaml - $ oc create -f backup-apimanager.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - backup.velero.io/operator-resources-apim created - backup.velero.io/operator-resources-apim created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.21.2.3. 备份 MySQL 数据库
您可以通过创建并附加持久性卷声明(PVC)来备份 MySQL 数据库,以便在指定路径中包含转储的数据。
先决条件
- 您已备份了 Red Hat 3scale API Management operator。
流程
- 使用以下配置创建 YAML 文件来添加额外 PVC: - ts_pvc.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建额外 PVC: - oc create -f ts_pvc.yml - $ oc create -f ts_pvc.yml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 通过编辑 - system-mysql部署以使用 MySQL 转储,将 PVC 附加到系统数据库 pod:- oc edit deployment system-mysql -n threescale - $ oc edit deployment system-mysql -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 包含转储数据的 PVC。
 
- 使用以下配置创建 YAML 文件以备份 MySQL 数据库: - mysql.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令备份 MySQL 数据库: - oc create -f mysql.yaml - $ oc create -f mysql.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - backup.velero.io/mysql-backup created - backup.velero.io/mysql-backup created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令验证 MySQL 备份是否已完成: - oc get backups.velero.io mysql-backup -o yaml - $ oc get backups.velero.io mysql-backup -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.21.2.4. 备份后端 Redis 数据库
						您可以通过添加所需的注解并使用 includedResources 参数列出哪些资源来备份 Redis 数据库。
					
先决条件
- 备份 Red Hat 3scale API Management Operator。
- 您备份了 MySQL 数据库。
- 在执行备份前,Redis 队列已排空。
流程
- 运行以下命令,编辑 - backend-redis部署上的注解:- oc edit deployment backend-redis -n threescale - $ oc edit deployment backend-redis -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下配置创建 YAML 文件以备份 Redis 数据库: - redis-backup.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 备份中的metadata.name参数的值与恢复 Redis 数据库时使用的metadata.backupName参数的值相同。
 
- 运行以下命令备份 Redis 数据库: - oc create -f redis-backup.yaml - $ oc create -f redis-backup.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - backup.velero.io/redis-backup created - backup.velero.io/redis-backup created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令验证 Redis 备份是否已完成: - oc get backups.velero.io redis-backup -o yaml - $ oc get backups.velero.io redis-backup -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.21.3. 使用 OADP 恢复 3scale API 管理
您可以通过恢复备份的 3scale operator 资源来恢复 Red Hat 3scale API Management 组件。您还可以恢复 MySQL 和 Redis 等数据库。
恢复数据后,您可以扩展 3scale 操作器和部署。
先决条件
- 已安装并配置了 Red Hat 3scale API Management。如需更多信息,请参阅在 OpenShift 和 Red Hat 3scale API Management 上安装 3scale API 管理。
- 您备份了 3scale 操作器和数据库,如 MySQL 和 Redis。
- 确保您在从备份的同一集群中恢复 3scale。
- 如果要在不同的集群中恢复 3scale,请确保原始备份集群和您要恢复 Operator 的集群使用相同的自定义域。
						您可以按照以下流程恢复 Red Hat 3scale API Management operator 资源,以及 Secret 和 APIManager 自定义资源(CR)。
					
先决条件
- 备份 3scale Operator。
- 您备份了 MySQL 和 Redis 数据库。
- 您可以在备份的同一集群中恢复数据库。 - 如果要将 Operator 恢复到您备份的不同集群,请在目标集群上安装和配置 OADP,并在目标集群中启用 - nodeAgent。确保 OADP 配置与源集群中的相同。
流程
- 运行以下命令,删除 3scale operator 自定义资源定义(CRD)和 - threescale命名空间:- oc delete project threescale - $ oc delete project threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - "threescale" project deleted successfully - "threescale" project deleted successfully- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下配置创建 YAML 文件,以恢复 3scale Operator: - restore.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 恢复 3scale Operator 的备份
 
- 运行以下命令来恢复 3scale Operator: - oc create -f restore.yaml - $ oc create -f restore.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - restore.velerio.io/operator-installation-restore created - restore.velerio.io/operator-installation-restore created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令手动创建 - s3-credentials- Secret对象:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令缩减 3scale Operator: - oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale - $ oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - deployment.apps/threescale-operator-controller-manager-v2 scaled - deployment.apps/threescale-operator-controller-manager-v2 scaled- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下配置创建 YAML 文件,以恢复 - Secret:- restore-secret.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 恢复Secret备份。
 
- 运行以下命令来恢复 - Secret:- oc create -f restore-secrets.yaml - $ oc create -f restore-secrets.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - restore.velerio.io/operator-resources-secrets created - restore.velerio.io/operator-resources-secrets created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下配置创建 YAML 文件以恢复 APIManager: - restore-apimanager.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来恢复 APIManager: - oc create -f restore-apimanager.yaml - $ oc create -f restore-apimanager.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - restore.velerio.io/operator-resources-apim created - restore.velerio.io/operator-resources-apim created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令扩展 3scale Operator: - oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale - $ oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - deployment.apps/threescale-operator-controller-manager-v2 scaled - deployment.apps/threescale-operator-controller-manager-v2 scaled- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.21.3.2. 恢复 MySQL 数据库
恢复 MySQL 数据库重新创建以下资源:
- 
								Pod、ReplicationController和Deployment对象。
- 其他持久性卷(PV)和关联的持久性卷声明(PVC)。
- 
								example-claimPVC 包含的 MySQL 转储。
不要删除与数据库关联的默认 PV 和 PVC。如果这样做,您的备份会被删除。
先决条件
- 
								您恢复了 Secret和 APIManager 自定义资源(CR)。
流程
- 运行以下命令缩减 Red Hat 3scale API Management Operator: - oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale - $ oc scale deployment threescale-operator-controller-manager-v2 --replicas=0 -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - deployment.apps/threescale-operator-controller-manager-v2 scaled - deployment.apps/threescale-operator-controller-manager-v2 scaled- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建以下脚本以缩减 3scale Operator: - vi ./scaledowndeployment.sh - $ vi ./scaledowndeployment.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 脚本示例: - for deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do oc scale deployment/$deployment --replicas=0 -n threescale done- for deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do oc scale deployment/$deployment --replicas=0 -n threescale done- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令缩减所有部署 3scale 组件: - ./scaledowndeployment.sh - $ ./scaledowndeployment.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来删除 - system-mysql- Deployment对象:- oc delete deployment system-mysql -n threescale - $ oc delete deployment system-mysql -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "system-mysql" deleted - Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "system-mysql" deleted- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建以下 YAML 文件以恢复 MySQL 数据库: - restore-mysql.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来恢复 MySQL 数据库: - oc create -f restore-mysql.yaml - $ oc create -f restore-mysql.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - restore.velerio.io/restore-mysql created - restore.velerio.io/restore-mysql created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令验证 - PodVolumeRestore恢复是否已完成:- oc get podvolumerestores.velero.io -n openshift-adp - $ oc get podvolumerestores.velero.io -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME NAMESPACE POD UPLOADER TYPE VOLUME STATUS TOTALBYTES BYTESDONE AGE restore-mysql-rbzvm threescale system-mysql-2-kjkhl kopia mysql-storage Completed 771879108 771879108 40m restore-mysql-z7x7l threescale system-mysql-2-kjkhl kopia example-claim Completed 380415 380415 40m - NAME NAMESPACE POD UPLOADER TYPE VOLUME STATUS TOTALBYTES BYTESDONE AGE restore-mysql-rbzvm threescale system-mysql-2-kjkhl kopia mysql-storage Completed 771879108 771879108 40m restore-mysql-z7x7l threescale system-mysql-2-kjkhl kopia example-claim Completed 380415 380415 40m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令验证额外的 PVC 是否已恢复: - oc get pvc -n threescale - $ oc get pvc -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.21.3.3. 恢复后端 Redis 数据库
您可以通过删除部署并指定您不想恢复的资源来恢复后端 Redis 数据库。
先决条件
- 
								您恢复了 Red Hat 3scale API Management operator 资源、Secret和 APIManager 自定义资源。
- 您恢复了 MySQL 数据库。
流程
- 运行以下命令来删除 - backend-redis部署:- oc delete deployment backend-redis -n threescale - $ oc delete deployment backend-redis -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "backend-redis" deleted - Warning: apps.openshift.io/v1 deployment is deprecated in v4.14+, unavailable in v4.10000+ deployment.apps.openshift.io "backend-redis" deleted- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下配置创建 YAML 文件,以恢复 Redis 数据库: - restore-backend.yaml文件示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 恢复 Redis 备份。
 
- 运行以下命令来恢复 Redis 数据库: - oc create -f restore-backend.yaml - $ oc create -f restore-backend.yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - restore.velerio.io/restore-backend created - restore.velerio.io/restore-backend created- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令验证 - PodVolumeRestore恢复是否已完成:- oc get podvolumerestores.velero.io -n openshift-adp - $ oc get podvolumerestores.velero.io -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例: - NAME NAMESPACE POD UPLOADER TYPE VOLUME STATUS TOTALBYTES BYTESDONE AGE restore-backend-jmrwx threescale backend-redis-1-bsfmv kopia backend-redis-storage Completed 76123 76123 21m - NAME NAMESPACE POD UPLOADER TYPE VOLUME STATUS TOTALBYTES BYTESDONE AGE restore-backend-jmrwx threescale backend-redis-1-bsfmv kopia backend-redis-storage Completed 76123 76123 21m- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.21.3.4. 扩展 3scale API 管理操作器和部署
您可以扩展 Red Hat 3scale API Management operator 以及手动缩减的任何部署。几分钟后,3scale 安装应完全正常工作,其状态应与备份的状态匹配。
先决条件
- 
								您恢复了 3scale operator 资源,以及 Secret和 APIManager 自定义资源(CR)。
- 您恢复了 MySQL 和后端 Redis 数据库。
- 
								确保没有扩展部署,或者没有额外的 pod 运行。一些 system-mysql或backend-redispod 在恢复后从部署分离,可以在恢复成功后删除。
流程
- 运行以下命令扩展 3scale Operator: - oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale - $ oc scale deployment threescale-operator-controller-manager-v2 --replicas=1 -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - deployment.apps/threescale-operator-controller-manager-v2 scaled - deployment.apps/threescale-operator-controller-manager-v2 scaled- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,确保 3scale pod 正在运行以验证 3scale Operator 是否已部署: - oc get pods -n threescale - $ oc get pods -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME READY STATUS RESTARTS AGE threescale-operator-controller-manager-v2-79546bd8c-b4qbh 1/1 Running 0 2m5s - NAME READY STATUS RESTARTS AGE threescale-operator-controller-manager-v2-79546bd8c-b4qbh 1/1 Running 0 2m5s- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建以下脚本以扩展部署: - vi ./scaledeployment.sh - $ vi ./scaledeployment.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 脚本文件示例: - for deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do oc scale deployment/$deployment --replicas=1 -n threescale done- for deployment in apicast-production apicast-staging backend-cron backend-listener backend-redis backend-worker system-app system-memcache system-mysql system-redis system-searchd system-sidekiq zync zync-database zync-que; do oc scale deployment/$deployment --replicas=1 -n threescale done- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来扩展部署: - ./scaledeployment.sh - $ ./scaledeployment.sh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,获取 - 3scale-admin路由以登录到 3scale UI:- oc get routes -n threescale - $ oc get routes -n threescale- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在本例中, - 3scale-admin.apps.custom-cluster-name.openshift.com是 3scale-admin URL。
- 以管理员身份,使用此输出中的 URL 登录 3scale 操作器。您可以验证数据在进行备份时可用。