4.5. OADP 用例
以下是使用 OADP 和 ODF 备份应用程序的用例。
4.5.1.1. 使用 OADP 和 ODF 备份应用程序
在这种情况下,您可以使用 OADP 备份应用程序,并将备份存储在 Red Hat OpenShift Data Foundation (ODF) 提供的对象存储中。
- 您可以创建一个对象存储桶声明(OBC)来配置备份存储位置。您可以使用 ODF 配置 Amazon S3 兼容对象存储桶。ODF 提供 MultiCloud Object Gateway (NooBaa MCG) 和 Ceph 对象网关,也称为 RADOS 网关(RGW)、对象存储服务。在这种情况下,您可以使用 NooBaa MCG 作为备份存储位置。
- 
								您可以使用 aws供应商插件在 OADP 中使用 NooBaa MCG 服务。
- 您可以使用备份存储位置(BSL)配置数据保护应用程序(DPA)。
- 您可以创建备份自定义资源(CR)并指定要备份的应用程序命名空间。
- 您可以创建并验证备份。
先决条件
- 已安装 OADP Operator。
- 已安装 ODF Operator。
- 您有一个应用程序,其数据库在单独的命名空间中运行。
流程
- 创建一个 OBC 清单文件来请求 NooBaa MCG 存储桶,如下例所示: - OBC 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 OBC: - oc create -f <obc_file_name> - $ oc create -f <obc_file_name>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定对象存储桶声明清单的文件名。
 
- 当您创建 OBC 时,ODF 会创建一个 - secret和一个- 配置映射,其名称与对象存储桶声明相同。- secret具有存储桶凭证,- 配置映射有访问存储桶的信息。要从生成的配置映射中获取存储桶名称和存储桶主机,请运行以下命令:- oc extract --to=- cm/test-obc - $ oc extract --to=- cm/test-obc- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- test-obc是 OBC 的名称。
 - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要从生成的 - secret获取存储桶凭证,请运行以下命令:- oc extract --to=- secret/test-obc - $ oc extract --to=- secret/test-obc- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - # AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,从 - openshift-storage命名空间中的 s3 路由获取 S3 端点的公共 URL:- oc get route s3 -n openshift-storage - $ oc get route s3 -n openshift-storage- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用对象存储桶凭证创建一个 - cloud-credentials文件,如下所示:- [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> - [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 - cloud-credentials文件内容创建- cloud-credentialssecret,如下所示:- oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials - $ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 配置 Data Protection Application (DPA),如下例所示: - DPA 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 DPA: - oc apply -f <dpa_filename> - $ oc apply -f <dpa_filename>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,验证 DPA 是否已成功创建。在示例输出中,您可以看到 - status对象将- type字段设置为- Reconciled。这意味着 DPA 已被成功创建。- oc get dpa -o yaml - $ oc get dpa -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,验证备份存储位置(BSL)是否可用: - oc get backupstoragelocations.velero.io -n openshift-adp - $ oc get backupstoragelocations.velero.io -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true - NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 配置备份 CR,如下例所示: - 备份 CR 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定要备份的应用程序的命名空间。
 
- 运行以下命令来创建备份 CR: - oc apply -f <backup_cr_filename> - $ oc apply -f <backup_cr_filename>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令,验证备份对象是否处于 - Completed阶段。如需了解更多详细信息,请参阅示例输出。- oc describe backup test-backup -n openshift-adp - $ oc describe backup test-backup -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.5.2. OpenShift API for Data Protection (OADP) 恢复用例
以下是使用 OADP 的用例将备份恢复到不同的命名空间。
4.5.2.1. 使用 OADP 将应用程序恢复到不同的命名空间
						使用 OADP 将应用程序的备份恢复到新目标命名空间 test-restore-application。要恢复备份,请创建一个恢复自定义资源 (CR),如下例所示。在恢复 CR 中,源命名空间指的是您在备份中包含的应用程序命名空间。然后,您可以通过将项目更改为新的恢复的命名空间并验证资源来验证恢复。
					
先决条件
- 已安装 OADP Operator。
- 您已备份要恢复的应用程序。
流程
- 创建一个恢复 CR,如下例所示: - 恢复 CR 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来应用恢复 CR: - oc apply -f <restore_cr_filename> - $ oc apply -f <restore_cr_filename>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令验证恢复是否处于 - Completed阶段:- oc describe restores.velero.io <restore_name> -n openshift-adp - $ oc describe restores.velero.io <restore_name> -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,进入恢复的命名空间 - test-restore-application:- oc project test-restore-application - $ oc project test-restore-application- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,验证恢复的资源,如持久性卷声明(pvc)、服务(svc)、部署、secret 和配置映射: - oc get pvc,svc,deployment,secret,configmap - $ oc get pvc,svc,deployment,secret,configmap- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.5.3. 在备份过程中包括自签名 CA 证书
您可以在数据保护应用程序(DPA)中包括自签名证书颁发机构(CA)证书,然后备份应用程序。您可以将备份存储在 Red Hat OpenShift Data Foundation (ODF) 提供的 NooBaa 存储桶中。
4.5.3.1. 备份应用程序及其自签名 CA 证书
						ODF 提供的 s3.openshift-storage.svc 服务使用使用自签名服务 CA 签名的传输层安全协议 (TLS) 证书。
					
						要防止 由未知颁发机构签名的证书,您必须在 DataProtectionApplication 自定义资源(CR)的备份存储位置(BSL)部分包含自签名 CA 证书。在这种情况下,您必须完成以下任务:
					
- 通过创建对象存储桶声明(OBC)来请求 NooBaa 存储桶。
- 提取存储桶详情。
- 
								在 DataProtectionApplicationCR 中包含自签名 CA 证书。
- 备份应用程序。
先决条件
- 已安装 OADP Operator。
- 已安装 ODF Operator。
- 您有一个应用程序,其数据库在单独的命名空间中运行。
流程
- 创建 OBC 清单以请求 NooBaa 存储桶,如下例所示: - ObjectBucketClaimCR 示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 OBC: - oc create -f <obc_file_name> - $ oc create -f <obc_file_name>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 当您创建 OBC 时,ODF 会创建一个 - secret和一个- 配置映射,其名称与对象存储桶声明相同。- secret对象包含存储桶凭证,- ConfigMap对象包含用于访问存储桶的信息。要从生成的配置映射中获取存储桶名称和存储桶主机,请运行以下命令:- oc extract --to=- cm/test-obc - $ oc extract --to=- cm/test-obc- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- OBC 的名称为test-obc。
 - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 要从 - secret对象获取存储桶凭证,请运行以下命令:- oc extract --to=- secret/test-obc - $ oc extract --to=- secret/test-obc- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - AWS_ACCESS_KEY_ID AWS_SECRET_ACCESS_KEY - # AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下示例配置创建带有对象存储桶凭证的 - cloud-credentials文件:- [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY> - [default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,创建带有 - cloud-credentials文件内容的- cloud-credentialssecret:- oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials - $ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,从 - openshift-service-ca.crt配置映射中提取服务 CA 证书。确保您以- Base64格式编码证书,并记录下一步中使用的值。- oc get cm/openshift-service-ca.crt \ -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echo- $ oc get cm/openshift-service-ca.crt \ -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echo- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... ....gpwOHMwaG9CRmk5a3....FLS0tLS0K - LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... ....gpwOHMwaG9CRmk5a3....FLS0tLS0K- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用存储桶名称和 CA 证书配置 - DataProtectionApplicationCR 清单文件,如下例所示:- DataProtectionApplicationCR 示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 - DataProtectionApplicationCR:- oc apply -f <dpa_filename> - $ oc apply -f <dpa_filename>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令验证 - DataProtectionApplicationCR 是否已成功创建:- oc get dpa -o yaml - $ oc get dpa -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,验证备份存储位置(BSL)是否可用: - oc get backupstoragelocations.velero.io -n openshift-adp - $ oc get backupstoragelocations.velero.io -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true - NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用以下示例配置 - BackupCR:- BackupCR 示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定要备份的应用程序的命名空间。
 
- 运行以下命令来创建 - BackupCR:- oc apply -f <backup_cr_filename> - $ oc apply -f <backup_cr_filename>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令,验证 - Backup对象是否处于- Completed阶段:- oc describe backup test-backup -n openshift-adp - $ oc describe backup test-backup -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
4.5.4. 使用 legacy-aws Velero 插件
					如果您使用一个 AWS S3 兼容备份存储位置,在备份应用程序时可能会出现 SignatureDoesNotMatch 错误。发生此错误的原因是,一些备份存储位置仍然使用旧版本的 S3 API,这与 Go V2 的较新的 AWS SDK 不兼容。要解决这个问题,您可以在 DataProtectionApplication 自定义资源(CR)中使用 legacy-aws Velero 插件。legacy-aws Velero 插件使用旧的 AWS SDK 用于 Go V1,它与旧的 S3 API 兼容,确保备份成功。
				
						在以下用例中,您可以使用 legacy-aws Velero 插件配置 DataProtectionApplication CR,然后备份应用程序。
					
							根据您选择的备份存储位置,您可以在 DataProtectionApplication CR 中使用 legacy-aws 或 aws 插件。如果您在 DataProtectionApplication CR 中同时使用了这两个插件,则会出现以下错误:aws and legacy-aws can not be both specified in DPA spec.configuration.velero.defaultPlugins。
						
先决条件
- 已安装 OADP Operator。
- 您已将一个 AWS S3 兼容对象存储配置为备份位置。
- 您有一个应用程序,其数据库在单独的命名空间中运行。
流程
- 将 - DataProtectionApplicationCR 配置为使用- legacy-awsVelero 插件,如下例所示:- DataProtectionApplicationCR 示例- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令来创建 - DataProtectionApplicationCR:- oc apply -f <dpa_filename> - $ oc apply -f <dpa_filename>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,验证 - DataProtectionApplicationCR 是否已成功创建。在示例输出中,您可以看到- status对象将- type字段设置为- Reconciled,- status字段设置为- "True"。该状态表示- DataProtectionApplicationCR 已被成功创建。- oc get dpa -o yaml - $ oc get dpa -o yaml- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令,验证备份存储位置(BSL)是否可用: - oc get backupstoragelocations.velero.io -n openshift-adp - $ oc get backupstoragelocations.velero.io -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true - NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 配置 - BackupCR,如下例所示:- 备份 CR 示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定要备份的应用程序的命名空间。
 
- 运行以下命令来创建 - BackupCR:- oc apply -f <backup_cr_filename> - $ oc apply -f <backup_cr_filename>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 运行以下命令,验证备份对象是否处于 - Completed阶段。如需了解更多详细信息,请参阅示例输出。- oc describe backups.velero.io test-backup -n openshift-adp - $ oc describe backups.velero.io test-backup -n openshift-adp- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow