4.5. OADP 用例
4.5.1. 使用 OpenShift API 进行数据保护和 Red Hat OpenShift Data Foundation (ODF)备份
以下是使用 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 示例
apiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: test-obc 1 namespace: openshift-adp spec: storageClassName: openshift-storage.noobaa.io generateBucketName: test-backup-bucket 2
运行以下命令来创建 OBC:
$ oc create -f <obc_file_name> 1
- 1
- 指定对象存储桶声明清单的文件名。
当您创建 OBC 时,ODF 会创建一个
secret
和配置映射,其名称与对象存储桶声明相同。secret
具有存储桶凭证,配置映射
有访问存储桶的信息。要从生成的配置映射中获取存储桶名称和存储桶主机,请运行以下命令:$ oc extract --to=- cm/test-obc 1
- 1
test-obc
是 OBC 的名称。
输出示例
# BUCKET_NAME backup-c20...41fd # BUCKET_PORT 443 # BUCKET_REGION # BUCKET_SUBREGION # BUCKET_HOST s3.openshift-storage.svc
要从生成的
secret
获取存储桶凭证,请运行以下命令:$ oc extract --to=- secret/test-obc
输出示例
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym
运行以下命令,从
openshift-storage
命名空间中的 s3 路由获取 S3 端点的公共 URL:$ oc get route s3 -n openshift-storage
使用对象存储桶凭证创建一个
cloud-credentials
文件,如下所示:[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
使用
cloud-credentials
文件内容创建cloud-credentials
secret,如下所示:$ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials
配置 Data Protection Application (DPA),如下例所示:
DPA 示例
apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: oadp-backup namespace: openshift-adp spec: configuration: nodeAgent: enable: true uploaderType: kopia velero: defaultPlugins: - aws - openshift - csi defaultSnapshotMoveData: true 1 backupLocations: - velero: config: profile: "default" region: noobaa s3Url: https://s3.openshift-storage.svc 2 s3ForcePathStyle: "true" insecureSkipTLSVerify: "true" provider: aws default: true credential: key: cloud name: cloud-credentials objectStorage: bucket: <bucket_name> 3 prefix: oadp
运行以下命令来创建 DPA:
$ oc apply -f <dpa_filename>
运行以下命令,验证 DPA 是否已成功创建。在示例输出中,您可以看到
status
对象将type
字段设置为Reconciled
。这意味着 DPA 已被成功创建。$ oc get dpa -o yaml
输出示例
apiVersion: v1 items: - apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: namespace: openshift-adp #...# spec: backupLocations: - velero: config: #...# status: conditions: - lastTransitionTime: "20....9:54:02Z" message: Reconcile complete reason: Complete status: "True" type: Reconciled kind: List metadata: resourceVersion: ""
运行以下命令,验证备份存储位置(BSL)是否可用:
$ oc get backupstoragelocations.velero.io -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true
配置备份 CR,如下例所示:
备份 CR 示例
apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace> 1
- 1
- 指定要备份的应用程序的命名空间。
运行以下命令来创建备份 CR:
$ oc apply -f <backup_cr_filename>
验证
运行以下命令,验证备份对象是否处于
Completed
阶段。如需了解更多详细信息,请参阅示例输出。$ oc describe backup test-backup -n openshift-adp
输出示例
Name: test-backup Namespace: openshift-adp # ....# Status: Backup Item Operations Attempted: 1 Backup Item Operations Completed: 1 Completion Timestamp: 2024-09-25T10:17:01Z Expiration: 2024-10-25T10:16:31Z Format Version: 1.1.0 Hook Status: Phase: Completed Progress: Items Backed Up: 34 Total Items: 34 Start Timestamp: 2024-09-25T10:16:31Z Version: 1 Events: <none>
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 示例
apiVersion: velero.io/v1 kind: Restore metadata: name: test-restore 1 namespace: openshift-adp spec: backupName: <backup_name> 2 restorePVs: true namespaceMapping: <application_namespace>: test-restore-application 3
运行以下命令来应用恢复 CR:
$ oc apply -f <restore_cr_filename>
验证
运行以下命令验证恢复是否处于
Completed
阶段:$ oc describe restores.velero.io <restore_name> -n openshift-adp
运行以下命令,进入恢复的命名空间
test-restore-application
:$ oc project test-restore-application
运行以下命令,验证恢复的资源,如持久性卷声明(pvc)、服务(svc)、部署、secret 和配置映射:
$ oc get pvc,svc,deployment,secret,configmap
输出示例
NAME STATUS VOLUME persistentvolumeclaim/mysql Bound pvc-9b3583db-...-14b86 NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/mysql ClusterIP 172....157 <none> 3306/TCP 2m56s service/todolist ClusterIP 172.....15 <none> 8000/TCP 2m56s NAME READY UP-TO-DATE AVAILABLE AGE deployment.apps/mysql 0/1 1 0 2m55s NAME TYPE DATA AGE secret/builder-dockercfg-6bfmd kubernetes.io/dockercfg 1 2m57s secret/default-dockercfg-hz9kz kubernetes.io/dockercfg 1 2m57s secret/deployer-dockercfg-86cvd kubernetes.io/dockercfg 1 2m57s secret/mysql-persistent-sa-dockercfg-rgp9b kubernetes.io/dockercfg 1 2m57s NAME DATA AGE configmap/kube-root-ca.crt 1 2m57s configmap/openshift-service-ca.crt 1 2m57s
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 bucket。
- 提取存储桶详情。
-
在
DataProtectionApplication
CR 中包含自签名 CA 证书。 - 备份应用程序。
先决条件
- 已安装 OADP Operator。
- 已安装 ODF Operator。
- 您有一个应用程序,其数据库在单独的命名空间中运行。
流程
创建 OBC 清单以请求 NooBaa 存储桶,如下例所示:
Example
ObjectBucketClaim
CRapiVersion: objectbucket.io/v1alpha1 kind: ObjectBucketClaim metadata: name: test-obc 1 namespace: openshift-adp spec: storageClassName: openshift-storage.noobaa.io generateBucketName: test-backup-bucket 2
运行以下命令来创建 OBC:
$ oc create -f <obc_file_name>
创建 OBC 时,ODF 会创建一个与对象存储桶声明相同的
secret
和ConfigMap
。secret
对象包含存储桶凭证,ConfigMap
对象包含用于访问存储桶的信息。要从生成的配置映射中获取存储桶名称和存储桶主机,请运行以下命令:$ oc extract --to=- cm/test-obc 1
- 1
- OBC 的名称为
test-obc
。
输出示例
# BUCKET_NAME backup-c20...41fd # BUCKET_PORT 443 # BUCKET_REGION # BUCKET_SUBREGION # BUCKET_HOST s3.openshift-storage.svc
要从
secret
对象获取存储桶凭证,请运行以下命令:$ oc extract --to=- secret/test-obc
输出示例
# AWS_ACCESS_KEY_ID ebYR....xLNMc # AWS_SECRET_ACCESS_KEY YXf...+NaCkdyC3QPym
使用以下示例配置创建带有对象存储桶凭证的
cloud-credentials
文件:[default] aws_access_key_id=<AWS_ACCESS_KEY_ID> aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
运行以下命令,使用
cloud-credentials
$ oc create secret generic \ cloud-credentials \ -n openshift-adp \ --from-file cloud=cloud-credentials
运行以下命令,从
openshift-service-ca.crt
配置映射中提取服务 CA 证书。确保您以Base64
格式编码证书,并记录下一步中使用的值。$ oc get cm/openshift-service-ca.crt \ -o jsonpath='{.data.service-ca\.crt}' | base64 -w0; echo
输出示例
LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0... ....gpwOHMwaG9CRmk5a3....FLS0tLS0K
使用存储桶名称和 CA 证书配置
DataProtectionApplication
CR 清单文件,如下例所示:DataProtectionApplication
CR 示例apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: name: oadp-backup namespace: openshift-adp spec: configuration: nodeAgent: enable: true uploaderType: kopia velero: defaultPlugins: - aws - openshift - csi defaultSnapshotMoveData: true backupLocations: - velero: config: profile: "default" region: noobaa s3Url: https://s3.openshift-storage.svc s3ForcePathStyle: "true" insecureSkipTLSVerify: "false" 1 provider: aws default: true credential: key: cloud name: cloud-credentials objectStorage: bucket: <bucket_name> 2 prefix: oadp caCert: <ca_cert> 3
运行以下命令来创建
DataProtectionApplication
CR:$ oc apply -f <dpa_filename>
运行以下命令验证
DataProtectionApplication
CR 是否已成功创建:$ oc get dpa -o yaml
输出示例
apiVersion: v1 items: - apiVersion: oadp.openshift.io/v1alpha1 kind: DataProtectionApplication metadata: namespace: openshift-adp #...# spec: backupLocations: - velero: config: #...# status: conditions: - lastTransitionTime: "20....9:54:02Z" message: Reconcile complete reason: Complete status: "True" type: Reconciled kind: List metadata: resourceVersion: ""
运行以下命令,验证备份存储位置(BSL)是否可用:
$ oc get backupstoragelocations.velero.io -n openshift-adp
输出示例
NAME PHASE LAST VALIDATED AGE DEFAULT dpa-sample-1 Available 3s 15s true
使用以下示例配置
Backup
CR:Backup
CR 示例apiVersion: velero.io/v1 kind: Backup metadata: name: test-backup namespace: openshift-adp spec: includedNamespaces: - <application_namespace> 1
- 1
- 指定要备份的应用程序的命名空间。
运行以下命令来创建
Backup
CR:$ oc apply -f <backup_cr_filename>
验证
运行以下命令,验证
Backup
对象是否处于Completed
阶段:$ oc describe backup test-backup -n openshift-adp
输出示例
Name: test-backup Namespace: openshift-adp # ....# Status: Backup Item Operations Attempted: 1 Backup Item Operations Completed: 1 Completion Timestamp: 2024-09-25T10:17:01Z Expiration: 2024-10-25T10:16:31Z Format Version: 1.1.0 Hook Status: Phase: Completed Progress: Items Backed Up: 34 Total Items: 34 Start Timestamp: 2024-09-25T10:16:31Z Version: 1 Events: <none>