第 10 章 使用自定义资源进行 3scale 备份和恢复
本章包含使用 API Manager 自定义资源(CR)部署的 Red Hat 3scale API 管理安装的备份和恢复功能详情。在这种情况下,CRD 由 3scale Operator 提供。
来自 operator 功能的自定义资源不属于 3scale 安装的一部分。因此,在 3scale 安装备份和恢复功能中不包含自定义资源。
前提条件
- 3scale 安装
以下小节包含使用 Operator 执行 3scale 备份和恢复的步骤。
10.1. 使用操作器备份 3scale
下面的部分提供了备份由 APIManager 自定义资源部署的 3scale 安装所需的信息和步骤。
10.1.1. 备份兼容场景
要查看可以备份的 3scale 安装配置,请查看以下部分:
前提条件
备份 3scale 外部数据库:
-
backend-redis
-
system-redis
-
system-database
-
zync
(可选)
-
- 为 PVC 置备足够空间,使其包含备份的数据。
如果您使用 APIManager 部署 3scale,则无法使用 Amazon S3 作为系统的 FileStorage。
如需有关外部数据库的更多信息,请参阅 外部数据库安装。
10.1.2. 备份场景范围
外部配置以下数据库时,可以使用备份功能:
- 后端 Redis 数据库
- 系统 Redis 数据库
- 系统数据库 - MySQL 或 PostgreSQL
- Zync 数据库(可选)
10.1.3. 备份数据
下表显示了已备份的数据的列表:
对象 | 对象类型数据 |
---|---|
Secrets |
|
ConfigMaps |
|
APIManager | APIManager CR Kubernetes 对象定义 - json 模式定义 |
System FileStorage | 当系统文件存储的位置位于 PersistentVolumeClaim(PVC)中时 |
10.1.4. 备份 3scale
要备份使用现有 APIManager 部署 3scale 安装,请使用以下步骤:
流程
备份以下 Kubernetes secret:
-
backend-redis
-
system-redis
-
system-database
-
zync
(可选)
-
在部署了由 APIManager 对象管理的 3scale 安装的同一命名空间中创建
APIManagerBackup
CR,如下例所示:示例 1
apiVersion: apps.3scale.net/v1alpha1 kind: APIManagerBackup metadata: name: example-apimanagerbackup-pvc spec: backupDestination: persistentVolumeClaim: resources: requests: "10Gi"
示例 2 提供已存在的 PersistentVolume 名称:
apiVersion: apps.3scale.net/v1alpha1 kind: APIManagerBackup metadata: name: example-apimanagerbackup-pvc spec: backupDestination: persistentVolumeClaim: # resources specification is required but ignored when providing a volumeName as per K8s PVCs requirements behavior resources: requests: "10Gi" volumeName: "my-preexisting-persistent-volume"
-
等待
APIManagerBackup
完成。通过获取APIManagerBackup
的内容并等待.status.completed
字段设置为 true 进行检查。
备份内容在备份数据中详细介绍。
APIManagerBackup
的 status 部分中的其他字段显示备份详情,如当配置的备份目的地为 PVC 时备份数据的 PVC 名称。
如需以后的引用,请记下 status.backupPersistentVolumeClaimName
字段的值。当使用 APIManagerRestore
恢复 APIManager 安装时,它所需的其中一个字段是 PersistentVolumeClaimName
备份源。
10.1.5. 备份 3scale 自定义资源
如果您在 OpenShift 管理员帐户之外没有 CR 副本,使用以下命令创建 3scale 项目 CR 的备份:
键入以下命令从 3scale 项目中导出 ActiveDocs CR:
oc get activedocs.capabilities.3scale.net -o yaml > activedocs.yaml
键入以下命令从 3scale 项目中导出 backend CR:
oc get backend.capabilities.3scale.net -o yaml > backend.yaml
键入以下命令,从 3scale 项目中导出 CustomPolicyDefinition CR:
oc get custompolicydefinition.capabilities.3scale.net -o yaml > custompolicydefinition.yaml
键入以下命令从 3scale 项目中导出 DeveloperAccount CR:
oc get developeraccount.capabilities.3scale.net -o yaml > developeraccount.yaml
键入以下命令从 3scale 项目中导出 DeveloperUser CR:
oc get developeruser.capabilities.3scale.net -o yaml > developeruser.yaml
键入以下命令从 3scale 项目中导出 OpenAPI CR:
oc get openapi.capabilities.3scale.net -o yaml > openapi.yaml
键入以下命令从 3scale 项目中导出产品 CR:
oc get product.capabilities.3scale.net -o yaml > product.yaml
键入以下命令,从 3scale 项目中导出租户 CR:
oc get tenant.capabilities.3scale.net -o yaml > tenant.yaml