×

您可以将自签名证书颁发机构 (CA) 证书包含在数据保护应用程序 (DPA) 中,然后备份应用程序。您将备份存储在 Red Hat OpenShift 数据基金会 (ODF) 提供的 NooBaa 存储桶中。

备份应用程序及其自签名 CA 证书

ODF 提供的s3.openshift-storage.svc服务使用由自签名服务 CA 签名的传输层安全协议 (TLS) 证书。

为避免出现证书由未知机构签名错误,您必须在DataProtectionApplication自定义资源 (CR) 的备份存储位置 (BSL) 部分中包含自签名 CA 证书。对于这种情况,您必须完成以下任务

  • 通过创建对象存储桶声明 (OBC) 来请求 NooBaa 存储桶。

  • 提取存储桶详细信息。

  • DataProtectionApplication CR 中包含自签名 CA 证书。

  • 备份应用程序。

先决条件
  • 您已安装 OADP 运算符。

  • 您已安装 ODF 运算符。

  • 您有一个在单独命名空间中运行数据库的应用程序。

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

    示例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密钥

    $ 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. 使用以下示例配置DataProtectionApplication CR 清单文件和存储桶名称以及 CA 证书

    示例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>