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)
以下是使用 OADP 和 ODF 备份应用程序的用例。
在此用例中,您使用 OADP 备份应用程序并将备份存储在 Red Hat OpenShift 数据基金会 (ODF) 提供的对象存储中。
您创建对象存储桶声明 (OBC) 以配置备份存储位置。您使用 ODF 配置与 Amazon S3 兼容的对象存储桶。ODF 提供多云对象网关 (NooBaa MCG) 和 Ceph 对象网关(也称为 RADOS 网关 (RGW))对象存储服务。在此用例中,您使用 NooBaa MCG 作为备份存储位置。
您使用 `aws` 提供程序插件将 NooBaa MCG 服务与 OADP 配合使用。
您使用备份存储位置 (BSL) 配置数据保护应用程序 (DPA)。
您创建一个备份自定义资源 (CR) 并指定要备份的应用程序命名空间。
您创建并验证备份。
您已安装 OADP 运算符。
您已安装 ODF 运算符。
您有一个在单独命名空间中运行数据库的应用程序。
创建 OBC 清单文件以请求 NooBaa MCG 存储桶,如下例所示
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)
1 | 对象存储桶声明的名称。 |
2 | 存储桶的名称。 |
运行以下命令创建 OBC
$ oc create -f <obc_file_name> (1)
1 | 指定对象存储桶声明清单的文件名。 |
创建 OBC 时,ODF 会创建一个与对象存储桶声明同名的 `secret` 和 `config map`。`secret` 包含存储桶凭据,`config map` 包含访问存储桶的信息。要从生成的 config map 获取存储桶名称和存储桶主机,请运行以下命令
$ 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` 密钥,如下面的命令所示
$ oc create secret generic \
cloud-credentials \
-n openshift-adp \
--from-file cloud=cloud-credentials
配置数据保护应用程序 (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
1 | 设置为 true 以使用 OADP 数据移动器来启用将容器存储接口 (CSI) 快照移动到远程对象存储。 |
2 | 这是 ODF 存储的 S3 URL。 |
3 | 指定存储桶名称。 |
运行以下命令创建 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,如下例所示
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>