×

如果您使用的是与 AWS S3 兼容的备份存储位置,您可能会在备份应用程序时收到SignatureDoesNotMatch错误。此错误是由于某些备份存储位置仍然使用旧版本的 S3 API,这些 API 与较新的 AWS SDK for Go V2 不兼容。要解决此问题,您可以在DataProtectionApplication自定义资源 (CR) 中使用legacy-aws Velero 插件。legacy-aws Velero 插件使用旧的 AWS SDK for Go V1,它与旧版 S3 API 兼容,确保备份成功。

在 DataProtectionApplication CR 中使用 legacy-aws Velero 插件

在以下用例中,您使用legacy-aws Velero 插件配置DataProtectionApplication CR,然后备份应用程序。

根据您选择的备份存储位置,您可以在DataProtectionApplication CR 中使用legacy-awsaws插件。如果您在DataProtectionApplication CR 中同时使用这两个插件,则会发生以下错误:aws and legacy-aws can not be both specified in DPA spec.configuration.velero.defaultPlugins

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

  • 您已将与 AWS S3 兼容的对象存储配置为备份位置。

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

步骤
  1. 配置DataProtectionApplication CR 以使用legacy-aws Velero 插件,如下例所示

    示例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:
            - legacy-aws (1)
            - openshift
            - csi
          defaultSnapshotMoveData: true
      backupLocations:
        - velero:
            config:
              profile: "default"
              region: noobaa
              s3Url: https://s3.openshift-storage.svc
              s3ForcePathStyle: "true"
              insecureSkipTLSVerify: "true"
            provider: aws
            default: true
            credential:
              key: cloud
              name:  cloud-credentials
            objectStorage:
              bucket: <bucket_name> (2)
              prefix: oadp
    1 使用legacy-aws插件。
    2 指定存储桶名称。
  2. 通过运行以下命令创建DataProtectionApplication CR

    $ oc apply -f <dpa_filename>
  3. 通过运行以下命令验证DataProtectionApplication CR 是否已成功创建。在示例输出中,您可以看到status对象具有设置为Reconciledtype字段和设置为"True"status字段。此状态表示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: ""
  4. 通过运行以下命令验证备份存储位置 (BSL) 是否可用

    $ oc get backupstoragelocations.velero.io -n openshift-adp
    示例输出
    NAME           PHASE       LAST VALIDATED   AGE   DEFAULT
    dpa-sample-1   Available   3s               15s   true
  5. 配置Backup CR,如下例所示

    示例备份 CR
    apiVersion: velero.io/v1
    kind: Backup
    metadata:
      name: test-backup
      namespace: openshift-adp
    spec:
      includedNamespaces:
      - <application_namespace> (1)
    1 指定要备份的应用程序的命名空间。
  6. 通过运行以下命令创建Backup CR

    $ oc apply -f <backup_cr_filename>
验证
  • 通过运行以下命令验证备份对象是否处于Completed阶段。有关更多详细信息,请参见示例输出。

    $ oc describe backups.velero.io 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>