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 文件来备份
Secret
CR: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-claim
PVC 包含的 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-redis
pod 在恢复后从部署分离,可以在恢复成功后删除。
流程
运行以下命令扩展 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 操作器。您可以验证数据在进行备份时可用。