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。
  • 您有一个应用程序,其数据库在单独的命名空间中运行。

流程

  1. 创建一个 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

    1
    对象存储桶声明的名称。
    2
    bucket 的名称。
  2. 运行以下命令来创建 OBC:

    $ oc create -f <obc_file_name> 1
    1
    指定对象存储桶声明清单的文件名。
  3. 当您创建 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

  4. 要从生成的 secret 获取存储桶凭证,请运行以下命令:

    $ oc extract --to=- secret/test-obc

    输出示例

    # AWS_ACCESS_KEY_ID
    ebYR....xLNMc
    # AWS_SECRET_ACCESS_KEY
    YXf...+NaCkdyC3QPym

  5. 运行以下命令,从 openshift-storage 命名空间中的 s3 路由获取 S3 端点的公共 URL:

    $ oc get route s3 -n openshift-storage
  6. 使用对象存储桶凭证创建一个 cloud-credentials 文件,如下所示:

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
  7. 使用 cloud-credentials 文件内容创建 cloud-credentials secret,如下所示:

    $ oc create secret generic \
      cloud-credentials \
      -n openshift-adp \
      --from-file cloud=cloud-credentials
  8. 配置 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

    1
    设置为 true 来使用 OADP Data Mover 将 Container Storage Interface (CSI)快照移动到远程对象存储。
    2
    这是 ODF 存储的 S3 URL。
    3
    指定存储桶名称。
  9. 运行以下命令来创建 DPA:

    $ oc apply -f <dpa_filename>
  10. 运行以下命令,验证 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: ""

  11. 运行以下命令,验证备份存储位置(BSL)是否可用:

    $ oc get backupstoragelocations.velero.io -n openshift-adp

    输出示例

    NAME           PHASE       LAST VALIDATED   AGE   DEFAULT
    dpa-sample-1   Available   3s               15s   true

  12. 配置备份 CR,如下例所示:

    备份 CR 示例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: test-backup
      namespace: openshift-adp
    spec:
      includedNamespaces:
      - <application_namespace> 1

    1
    指定要备份的应用程序的命名空间。
  13. 运行以下命令来创建备份 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。
  • 您已备份要恢复的应用程序。

流程

  1. 创建一个恢复 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

    1
    恢复 CR 的名称。
    2
    指定备份的名称。
    3
    namespaceMapping 将源应用程序命名空间映射到目标应用程序命名空间。指定您备份的应用程序命名空间。test-restore-application 是您要恢复备份的目标命名空间。
  2. 运行以下命令来应用恢复 CR:

    $ oc apply -f <restore_cr_filename>

验证

  1. 运行以下命令验证恢复是否处于 Completed 阶段:

    $ oc describe restores.velero.io <restore_name> -n openshift-adp
  2. 运行以下命令,进入恢复的命名空间 test-restore-application

    $ oc project test-restore-application
  3. 运行以下命令,验证恢复的资源,如持久性卷声明(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。
  • 您有一个应用程序,其数据库在单独的命名空间中运行。

流程

  1. 创建 OBC 清单以请求 NooBaa 存储桶,如下例所示:

    Example ObjectBucketClaim CR

    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
    指定存储桶的名称。
  2. 运行以下命令来创建 OBC:

    $ oc create -f <obc_file_name>
  3. 创建 OBC 时,ODF 会创建一个与对象存储桶声明相同的 secretConfigMapsecret 对象包含存储桶凭证,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

  4. 要从 secret 对象获取存储桶凭证,请运行以下命令:

    $ oc extract --to=- secret/test-obc

    输出示例

    # AWS_ACCESS_KEY_ID
    ebYR....xLNMc
    # AWS_SECRET_ACCESS_KEY
    YXf...+NaCkdyC3QPym

  5. 使用以下示例配置创建带有对象存储桶凭证的 cloud-credentials 文件:

    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
  6. 运行以下命令,使用 cloud-credentials 文件内容创建 cloud-credentials secret:

    $ oc create secret generic \
      cloud-credentials \
      -n openshift-adp \
      --from-file cloud=cloud-credentials
  7. 运行以下命令,从 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

  8. 使用存储桶名称和 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

    1
    insecureSkipTLSVerify 标志可以设置为 truefalse。如果设置为 "true",则禁用 SSL/TLS 安全性。如果设置为 false,则启用 SSL/TLS 安全性。
    2
    指定上一步中提取的存储桶的名称。
    3
    复制并粘贴上一步中的 Base64 编码证书。
  9. 运行以下命令来创建 DataProtectionApplication CR:

    $ oc apply -f <dpa_filename>
  10. 运行以下命令验证 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: ""

  11. 运行以下命令,验证备份存储位置(BSL)是否可用:

    $ oc get backupstoragelocations.velero.io -n openshift-adp

    输出示例

    NAME           PHASE       LAST VALIDATED   AGE   DEFAULT
    dpa-sample-1   Available   3s               15s   true

  12. 使用以下示例配置 Backup CR:

    Backup CR 示例

    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: test-backup
      namespace: openshift-adp
    spec:
      includedNamespaces:
      - <application_namespace> 1

    1
    指定要备份的应用程序的命名空间。
  13. 运行以下命令来创建 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>

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.