5.19. OADP 自助服务


5.19.1. OADP 自助服务

OpenShift API for Data Protection (OADP) 1.5.0 引入了一个名为 OADP Self-Service 的新功能,使命名空间管理员用户在 OpenShift Container Platform 上备份和恢复应用程序。

5.19.1.1. 关于 OADP 自助服务

从 OADP 1.5.0 开始,您不需要 cluster-admin 角色来执行备份和恢复操作。您可以将 OADP 与命名空间 admin 角色一起使用。命名空间 admin 角色仅对该用户分配到的命名空间具有管理员访问权限。

您只能在集群管理员安装 OADP Operator 并提供所需权限后使用 Self-Service 功能。

OADP 自助服务功能为没有 cluster-admin 特权的用户提供安全自助服务数据保护功能,同时保持正确的访问控制。

OADP 集群管理员创建具有命名空间 admin 角色的用户,并为用户提供必要的基于角色的访问控制(RBAC),以执行 OADP Self-Service 操作。由于与 cluster-admin 角色相比,此用户具有有限的访问权限,因此此用户被称为命名空间 admin 用户。

作为命名空间 admin 用户,您可以备份和恢复集群中授权命名空间中部署的应用程序。

OADP 自助服务提供以下优点:

  • 作为集群管理员:

    • 您可以为命名空间 admin 用户允许命名空间范围的备份和恢复操作。这意味着,命名空间 admin 用户无法访问它们没有授权的命名空间。
    • 您可以通过 DataProtectionApplication 配置和策略,保持管理员对非管理员用户操作的控制。
  • 作为命名空间 admin 用户:

    • 您可以为授权命名空间创建备份和恢复自定义资源。
    • 您可以在授权命名空间中创建专用备份存储位置。
    • 您可以安全地访问备份日志和状态信息。

5.19.1.2. 命名空间范围的备份和恢复意味着

OADP 自助服务可确保命名空间管理员用户只能在其授权命名空间中运行。例如,如果您无法以命名空间 admin 用户身份访问命名空间,则无法备份该命名空间。

命名空间 admin 用户无法访问其他用户的备份和恢复数据。

集群管理员通过自定义资源(CR)强制实施访问控制,以安全地管理备份和恢复操作。

另外,集群管理员可以控制 CR 中允许的选项,使用 DataProtectionApplication (DPA) CR 中的 spec 强制限制添加安全性的某些操作。

命名空间 管理员用户可以执行以下自助服务操作:

  • 创建和管理其授权命名空间的备份。
  • 将数据恢复到其授权命名空间。
  • 配置自己的备份存储位置。
  • 检查备份和恢复状态。
  • 请求检索相关日志。

5.19.1.3. OADP 自助服务自定义资源

OADP Self-Service 功能有以下新的自定义资源(CR),为命名空间 admin 用户执行备份和恢复操作:

Expand
表 5.6. 自定义资源

CR

描述

NonAdminController (NAC)

控制和编排自助服务操作。

NonAdminBackup (NAB)

管理命名空间范围的备份操作。

NonAdminRestore (NAR)

管理命名空间范围的恢复操作。

NonAdminBackupStorageLocation (NABSL)

定义特定于用户的备份存储位置。

NonAdminDownloadRequest (NADR)

管理命名空间范围的下载请求操作。

5.19.1.4. OADP 自助服务如何工作

下图显示了 OADP 自助服务如何在高级别上工作。图中描述了以下工作流:

  1. 命名空间 admin 用户创建 NonAdminBackup (NAB)自定义资源(CR)请求。
  2. NonAdminController (NAC) CR 接收 NAB CR 请求。
  3. NAC 验证请求并更新有关请求的 NAB CR。
  4. NAC 创建 Velero 备份对象。
  5. NAC 监控 Velero 备份对象,并将状态放回 NAB CR。

图 5.1. OADP 自助服务如何工作

5.19.1.5. OADP 自助服务先决条件

在开始使用 OADP Self-Service 作为命名空间 admin 用户前,请确定您满足以下先决条件:

  • 集群管理员已将 OADP DataProtectionApplication (DPA) CR 配置为启用自助服务。
  • 集群管理员已完成以下任务:

    • 创建命名空间 admin 用户帐户。
    • 为命名空间 admin 用户创建一个命名空间。
    • 为命名空间 admin 用户分配适当的特权。这样可确保命名空间 admin 用户在其分配的命名空间中访问并执行备份和恢复操作。
  • 另外,集群管理员可以为命名空间 admin 用户创建 NonAdminBackupStorageLocation (NABSL) CR。

5.19.1.6. OADP Self-Service 命名空间权限

作为集群管理员,确保为命名空间中的以下对象列表分配了命名空间 admin 用户的编辑器角色。这些对象可确保命名空间 admin 用户可以在其命名空间中执行备份和恢复操作。

  • nonadminbackups.oadp.openshift.io
  • nonadminbackupstoragelocations.oadp.openshift.io
  • nonadminrestores.oadp.openshift.io
  • nonadmindownloadrequests.oadp.openshift.io

如需有关命名空间 admin 角色的更多详细信息,请参阅 Default cluster roles

集群管理员也可以定义自己的规格,以便用户可以具有类似于 项目或命名空间 admin 角色的权限。

5.19.1.6.1. 备份操作的 RBAC YAML 示例

请参阅以下基于角色的访问控制(RBAC) YAML 文件示例,其中包含命名空间 admin 用户的命名空间权限,以执行备份操作。

RBAC 清单示例

...
- apiGroups:
      - oadp.openshift.io
    resources:
      - nonadminbackups
      - nonadminrestores
      - nonadminbackupstoragelocations
      - nonadmindownloadrequests
    verbs:
      - create
      - delete
      - get
      - list
      - patch
      - update
      - watch
  - apiGroups:
      - oadp.openshift.io
    resources:
      - nonadminbackups/status
      - nonadminrestores/status
    verbs:
      - get
Copy to Clipboard Toggle word wrap

5.19.1.7. OADP 自助服务限制

OADP Self-Service 不支持以下功能:

  • 不支持跨集群备份和恢复,或不支持迁移。集群管理员支持这些 OADP 操作。
  • 命名空间 admin 用户无法创建 VolumeSnapshotLocation (VSL) CR。集群管理员在命名空间 admin 用户的 DataProtectionApplication (DPA) CR 中创建和配置 VSL。
  • 命名空间 admin 用户不支持 ResourceModifiers CR 和卷策略。
  • 命名空间 admin 用户可以使用 NonAdminDownloadRequest CR 请求备份或恢复日志,只有在用户使用 NonAdminBackupStorageLocation CR 创建了备份或恢复时。

    如果使用集群范围的默认备份存储位置创建备份或恢复 CR,命名空间 admin 用户无法请求备份或恢复日志。

  • 为确保安全备份和恢复,OADP Self-Service 会自动排除以下 CR 正在备份或恢复:

    • NonAdminBackup
    • NonAdminRestore
    • NonAdminBackupStorageLocation
    • SecurityContextConstraints
    • ClusterRole
    • ClusterRoleBinding
    • CustomResourceDefinition
    • priorityclasses
    • VirtualMachineClusterInstanceTypes
    • VirtualMachineClusterPreferences

5.19.1.8. OADP 自助服务备份和恢复阶段

NonAdminBackup (NAB)自定义资源(CR)和 NonAdminRestore (NAR) CR 的 status.phase 字段提供 CR 的当前状态概述。查看下表中 NAB 和 NAR 阶段的值。

CR 的阶段仅进行转发。当阶段过渡到下一阶段后,它无法恢复到以前的阶段。

Expand
表 5.7. 阶段

value

描述

New

NAC 接受 NAB 或 NAR CR 的创建请求,但它尚未由 NAC 验证。

BackingOff

NAB 或 NAR CR 不被 NAC CR 无效,因为 NAB 或 NAR CR 的 spec 无效。

命名空间 admin 用户可以更新 NAB 或 NAR spec,以符合管理员所设定的策略。在命名空间 admin 用户编辑 CR 后,NAC 会再次协调 CR。

Created

NAB 或 NAR CR 由 NAC 验证,并创建了 Velero 备份或恢复对象。

删除

NAB 或 NAR CR 标记为删除。NAC 删除对应的 Velero 备份或恢复对象。删除 Velero 对象时,也会删除 NAB 或 NAR CR。

5.19.1.9. 关于 NonAdminBackupStorageLocation CR

命名空间管理员可以创建 NonAdminBackupStorageLocation (NABSL)自定义资源(CR)来存储备份数据。

为确保 NABSL CR 被安全创建和使用,请使用集群管理员控制。集群管理员管理 NABSL CR 以遵守公司策略和合规性要求。

您可以使用以下工作流之一创建 NABSL CR:

  • 管理员创建工作流 :在这个工作流中,集群管理员会为命名空间 admin 用户创建 NABSL CR。然后,命名空间 admin 用户在 NonAdminBackup CR 中引用 NABSL。
  • 管理员批准工作流 :集群管理员必须通过将 nonAdmin.requireApprovalForBSL 字段设置为 true,在 DPA 中显式启用此 opt-in 功能。集群管理员批准过程按如下方式工作:

    1. 命名空间 admin 用户创建一个 NABSL CR。由于管理员已在 DPA 中强制执行批准过程,所以它会触发在 openshift-adp 命名空间中创建 NonAdminBackupStorageLocationRequest CR。
    2. 集群管理员检查请求,并批准或拒绝请求。

      • 如果批准,在 openshift-adp 命名空间中创建 Velero BackupStorageLocation (BSL),并更新 NABSL CR 状态以反映批准。
      • 如果被拒绝,则更新了 NABSL CR 的状态,以反映拒绝。
    3. 集群管理员也可以撤销之前批准的 NABSL CR。approve 字段设置为 pendingreject。这会导致删除 Velero BSL,命名空间 admin 用户会收到拒绝通知。
  • 自动批准工作流 :在这个工作流中,集群管理员不会通过将 DPA 中的 nonAdmin.requireApprovalForBSL 字段设置为 false 来强制对 NABSL CR 的批准过程。此字段的默认值为 false。不设置字段会导致 NABSL 自动批准。因此,命名空间 admin 用户可以从其授权命名空间创建 NABSL CR。
重要

为了安全起见,请使用管理员创建或管理员批准工作流。自动批准工作流的安全性较低,因为它不需要管理员审核。

5.19.2. OADP 自助服务集群管理员用例

作为集群管理员,您可以在以下情况下使用 Self-Service 功能:

  • 启用或禁用 OADP 自助服务。
  • 批准或拒绝 NABSL 自定义资源(CR)。
  • DataProtectionApplication (DPA) CR 中强制模板策略。

5.19.2.1. 启用和禁用 OADP 自助服务

您必须是集群管理员才能启用 OADP Self-Service 功能。您可以使用 DataProtectionApplication (DPA)自定义资源(CR)的 spec.nonAdmin.enable 部分来启用和禁用 Self-Service 功能。

启用 Self-Service 功能会在 OADP Operator 命名空间中安装 NonAdminController (NAC) CR。

注意

您只能在集群中安装一个 NonAdminController (NAC) CR 实例。如果安装多个 NAC CR 实例,您会收到以下错误:

错误示例

message: only a single instance of Non-Admin Controller can be installed across the entire cluster. Non-Admin controller is already configured and installed in openshift-adp namespace.
Copy to Clipboard Toggle word wrap

先决条件

  • 使用 cluster-admin 角色登录到集群。
  • 已安装 OADP Operator。
  • 您已配置了 DPA。

流程

  • 要启用 OADP Self-Service,请编辑 DPA CR 来配置 nonAdmin.enable 部分。请参见以下示例配置:

    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
      nonAdmin: 
    1
    
        enable: true 
    2
    
      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>
              prefix: oadp
    Copy to Clipboard Toggle word wrap

    1
    在 DPA 的 spec 部分添加 nonAdmin.enable 部分。
    2
    enable 字段设置为 true。要禁用 Self-Service 功能,请将 enable 字段设置为 false

验证

  • 要验证 NonAdminController (NAC) pod 是否在 OADP 命名空间中运行,请运行以下命令:

    $ oc get pod -n openshift-adp -l control-plane=non-admin-controller
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                                  READY   STATUS    RESTARTS   AGE
    non-admin-controller-5d....f5-p..9p   1/1     Running   0          99m
    Copy to Clipboard Toggle word wrap

NonAdminBackupStorageLocation (NABSL)自定义资源(CR)管理员批准工作流是 opt-in 功能。作为集群管理员,您必须通过将 nonAdmin.requireApprovalForBSL 字段设置为 true 来显式启用 DataProtectionApplication (DPA) CR 中的功能。

您还需要将 DPA CR 中的 noDefaultBackupLocation 字段设置为 true。此设置表示,在 DPA CR 中没有配置默认备份存储位置,命名空间 admin 用户可以创建一个 NABSL CR,并发送用于批准的 CR 请求。

先决条件

  • 使用 cluster-admin 角色登录到集群。
  • 已安装 OADP Operator。
  • 您已在 DataProtectionApplication CR 中启用了 OADP Self-Service。

流程

  • 要启用 NABSL 管理员批准工作流,请使用以下示例配置编辑 DPA 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
          noDefaultBackupLocation: true 
    1
    
      nonAdmin:
        enable: true
        requireApprovalForBSL: true 
    2
    Copy to Clipboard Toggle word wrap

    1
    添加 noDefaultBackupLocation 字段,并将它设为 true
    2
    添加 requireApprovalForBSL 字段并将其设置为 true

5.19.2.3. 批准 NonAdminBackupStorageLocation 请求

作为集群管理员,若要批准 NonAdminBackupStorageLocation (NABSL) CR 请求,您可以编辑 NonAdminBackupStorageLocationRequest CR,并将 approvalDecision 字段设置为 批准

先决条件

  • 使用 cluster-admin 角色登录到集群。
  • 已安装 OADP Operator。
  • 您已在 DataProtectionApplication (DPA) CR 中启用了 OADP Self-Service。
  • 您已在 DPA 中启用了 NABSL CR 批准工作流。

流程

  1. 要查看队列中用于管理员批准的 NABSL CR 请求,请运行以下命令:

    $ oc -n openshift-adp get NonAdminBackupStorageLocationRequests
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                          REQUEST-PHASE   REQUEST-NAMESPACE     REQUEST-NAME               AGE
    non-admin-bsl-test-.....175   Approved        non-admin-bsl-test    incorrect-bucket-nabsl    4m57s
    non-admin-bsl-test-.....196   Approved        non-admin-bsl-test    perfect-nabsl             5m26s
    non-admin-bsl-test-s....e1a   Rejected        non-admin-bsl-test    suspicious-sample         2m56s
    non-admin-bsl-test-.....5e0   Pending         non-admin-bsl-test    waitingapproval-nabsl     4m20s
    Copy to Clipboard Toggle word wrap

  2. 要批准 NABSL CR 请求,请运行以下命令将 approvalDecision 字段设置为 批准

    $ oc patch nabslrequest <nabsl_name> -n openshift-adp --type=merge -p '{"spec": {"approvalDecision": "approve"}}' 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定 NonAdminBackupStorageLocationRequest CR 的名称。

验证

  • 运行以下命令验证 Velero 备份存储位置是否已创建并 阶段可用

    $ oc get velero.io.backupstoragelocation
    Copy to Clipboard Toggle word wrap

    输出示例

    NAME                         PHASE       LAST VALIDATED   AGE   DEFAULT
    test-nac-test-bsl-cd...930   Available   62s              62s
    Copy to Clipboard Toggle word wrap

5.19.2.4. 拒绝 NonAdminBackupStorageLocation 请求

作为集群管理员,若要拒绝 NonAdminBackupStorageLocation (NABSL)自定义资源(CR)请求,您可以编辑 NonAdminBackupStorageLocationRequest CR,并将 approvalDecision 字段设置为 拒绝

先决条件

  • 使用 cluster-admin 角色登录到集群。
  • 已安装 OADP Operator。
  • 您已在 DataProtectionApplication (DPA) CR 中启用了 OADP Self-Service。
  • 您已在 DPA 中启用了 NABSL CR 批准工作流。

流程

  1. 要查看队列中用于管理员批准的 NABSL CR 请求,请运行以下命令:

    $ oc -n openshift-adp get NonAdminBackupStorageLocationRequests
    Copy to Clipboard Toggle word wrap

    输出示例

    $ oc get nabslrequest
    NAME                          REQUEST-PHASE   REQUEST-NAMESPACE     REQUEST-NAME               AGE
    non-admin-bsl-test-.....175   Approved        non-admin-bsl-test    incorrect-bucket-nabsl    4m57s
    non-admin-bsl-test-.....196   Approved        non-admin-bsl-test    perfect-nabsl             5m26s
    non-admin-bsl-test-s....e1a   Rejected        non-admin-bsl-test    suspicious-sample         2m56s
    non-admin-bsl-test-.....5e0   Pending         non-admin-bsl-test    waitingapproval-nabsl     4m20s
    Copy to Clipboard Toggle word wrap

  2. 要拒绝 NABSL CR 请求,请运行以下命令将 approvalDecision 字段设置为 reject

    $ oc patch nabslrequest <nabsl_name> -n openshift-adp --type=merge -p '{"spec": {"approvalDecision": "reject"}}' 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定 NonAdminBackupStorageLocationRequest CR 的名称。

5.19.2.5. OADP 自助服务管理员 DPA spec 强制

作为集群管理员,您可以在 DataProtectionApplication (DPA) spec 模板中强制实施策略。spec 强制适用于 Self-Service 自定义资源(CR),如 NonAdminBackupNonAdminRestoreNonAdminBackupStorageLocation

集群管理员可以使用 DataProtectionApplication (DPA) CR 中的以下字段强制实施公司或合规策略:

enforceBSLSpec
要在 NonAdminBackupStorageLocation CR 上强制执行策略。
enforceBackupSpec
要在 NonAdminBackup CR 上强制执行策略。
enforceRestoreSpec
要在 NonAdminRestore CR 上强制执行策略。

通过使用强制字段,管理员可以确保命名空间 admin 用户创建的 NABSL、NAB 和 NAR CR 符合管理员定义的策略。

5.19.2.6. NABSL 的自助服务管理员规格强制

作为集群管理员,您可以为 NonAdminBackupStorageLocation (NABSL)自定义资源(CR)强制以下字段:

  • objectStorage
  • credential
  • config
  • accessMode
  • validationFrequency

例如,如果要强制命名空间 admin 用户使用特定的存储桶,您可以设置 DataProtectionApplication (DPA) CR,如下所示:

DataProtectionApplication CR 示例

apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
...
spec:
  nonAdmin:
    enable: true
    enforceBSLSpec: 
1

      config: 
2

        checksumAlgorithm: ""
        profile: default
        region: us-west-2
      objectStorage: 
3

        bucket: my-company-bucket
        prefix: velero
      provider: aws
Copy to Clipboard Toggle word wrap

1
添加 enforceBSLSpec 部分。
2
强制 NABSL 的 config 部分,以使用 us-west-2 区域中的 AWS S3 存储桶。
3
强制 NABSL 的 objectStorage 部分,以使用名为 my-company-bucket 的公司存储桶。

当命名空间 admin 用户创建 NABSL 时,他们必须遵循 DPA 中设置的模板。否则,NABSL CR 上的 status.phase 字段设置为 BackingOff,NABSL 无法创建。

5.19.2.7. NAB 的自助服务管理员规格实施

作为集群管理员,您可以为 NonAdminBackup (NAB) CR 强制以下字段:

  • csiSnapshotTimeout
  • itemOperationTimeout
  • resourcePolicy
  • includedResources
  • excludedResources
  • orderedResources
  • includeClusterResources
  • excludedClusterScopedResources
  • excludedNamespaceScopedResources
  • includedNamespaceScopedResources
  • labelSelector
  • orLabelSelectors
  • snapshotVolumes
  • ttl
  • snapshotMoveData
  • uploaderConfig.parallelFilesUpload

如果要为命名空间 admin 用户强制执行 ttl 值和 Data Mover 备份,您可以设置 DataProtectionApplication (DPA) CR,如下例所示:

DataProtectionApplication CR 示例

apiVersion: oadp.openshift.io/v1alpha1
kind: DataProtectionApplication
...
spec:
  nonAdmin:
    enable: true
    enforceBackupSpec: 
1

      snapshotMoveData: true 
2

      ttl: 158h0m0s 
3
Copy to Clipboard Toggle word wrap

1
添加 enforceBackupSpec 部分。
2
通过将 snapshotMoveData 字段设置为 true 来强制实施 Data Mover。
3
通过将 字段设置为 158h0m0s 来强制实施 ttl 值。

当命名空间 admin 用户创建 NAB CR 时,他们必须遵循 DPA 中设置的模板。否则,NAB CR 上的 status.phase 字段设置为 BackingOff,NAB CR 无法创建。

5.19.2.8. NAR 的自助服务管理员规格强制

作为集群管理员,您可以为 NonAdminRestore (NAR)自定义资源(CR)强制以下字段:

  • itemOperationTimeout
  • uploaderConfig
  • includedResources
  • excludedResources
  • restoreStatus
  • includeClusterResources
  • labelSelector
  • orLabelSelectors
  • restorePVs
  • preserveNodePorts

5.19.3. OADP 自助服务命名空间管理用例

作为命名空间 admin 用户,您可以在以下情况下使用 Self-Service 功能:

  • 在授权命名空间中创建备份存储位置。
  • 创建 NonAdminBackup (NAB)自定义资源(CR)。
  • 创建 NonAdminRestore (NAR) CR。
  • 查看 NAB 和 NAR 日志。

5.19.3.1. 创建 NonAdminBackupStorageLocation CR

您可以在授权命名空间中创建 NonAdminBackupStorageLocation (NABSL)自定义资源(CR)。集群管理员批准 NABSL CR 请求后,您可以使用 NonAdminBackup CR spec 中的 NABSL CR。

先决条件

  • 以命名空间 admin 用户身份登录集群。
  • 集群管理员已安装了 OADP Operator。
  • 集群管理员已将 DataProtectionApplication (DPA) CR 配置为启用 OADP Self-Service。
  • 集群管理员已为您创建了一个命名空间,并有权从该命名空间操作。

流程

  1. 使用您的云供应商的云凭证文件内容创建 Secret CR。运行以下命令:

    $ oc create secret generic cloud-credentials -n test-nac-ns --from-file <cloud_key_name>=<cloud_credentials_file> 
    1
    Copy to Clipboard Toggle word wrap
    1
    在本例中,Secret 名称是 cloud-credentials,授权命名空间名称为 test-nac-ns。将 <cloud_key_name > 和 <cloud_credentials_file > 替换为您的云密钥名称和云凭证文件名。
  2. 要创建 NonAdminBackupStorageLocation CR,请使用以下配置创建一个 YAML 清单文件:

    NonAdminBackupStorageLocation CR 示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminBackupStorageLocation
    metadata:
      name: test-nabsl
      namespace: test-nac-ns 
    1
    
    spec:
      backupStorageLocationSpec:
        config:
          profile: default
          region: <region_name> 
    2
    
        credential:
          key: cloud
          name: cloud-credentials
        objectStorage:
          bucket: <bucket_name> 
    3
    
          prefix: velero
        provider: aws
    Copy to Clipboard Toggle word wrap

    1
    指定授权从中操作的命名空间。例如,test-nac-ns
    2
    <region_name > 替换为区域名称。
    3
    <bucket_name > 替换为存储桶名称。
  3. 要应用 NABSL CR 配置,请运行以下命令:

    $ oc apply -f <nabsl_cr_filename> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <nabsl_cr_filename > 替换为包含 NABSL CR 配置的文件名。

验证

  1. 要验证 NABSL CR 是否在 New 阶段,且待处理的管理员批准,请运行以下命令:

    $ oc get nabsl test-nabsl -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminBackupStorageLocation
    ...
    status:
      conditions:
      - lastTransitionTime: "2025-02-26T09:07:15Z"
        message: NonAdminBackupStorageLocation spec validation successful
        reason: BslSpecValidation
        status: "True"
        type: Accepted
      - lastTransitionTime: "2025-02-26T09:07:15Z"
        message: NonAdminBackupStorageLocationRequest approval pending 
    1
    
        reason: BslSpecApprovalPending
        status: "False"
        type: ClusterAdminApproved
      phase: New 
    2
    
      veleroBackupStorageLocation:
        nacuuid: test-nac-test-bsl-c...d4389a1930
        name: test-nac-test-bsl-cd....1930
        namespace: openshift-adp
    Copy to Clipboard Toggle word wrap

    1
    定义 status.conditions.message 字段包含 NonAdminBackupStorageLocationRequest approval pending 消息。
    2
    定义阶段的状态为 New
  2. 集群管理员批准 NonAdminBackupStorageLocationRequest CR 请求后,通过运行以下命令验证 NABSL CR 是否已成功创建:

    $ oc get nabsl test-nabsl -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminBackupStorageLocation
    metadata:
      creationTimestamp: "2025-02-19T09:30:34Z"
      finalizers:
      - nonadminbackupstoragelocation.oadp.openshift.io/finalizer
      generation: 1
      name: test-nabsl
      namespace: test-nac-ns
      resourceVersion: "159973"
      uid: 4a..80-3260-4ef9-a3..5a-00...d1922
    spec:
      backupStorageLocationSpec:
        credential:
          key: cloud
          name: cloud-credentials
        objectStorage:
          bucket: oadp...51rrdqj
          prefix: velero
        provider: aws
    status:
      conditions:
      - lastTransitionTime: "2025-02-19T09:30:34Z"
        message: NonAdminBackupStorageLocation spec validation successful 
    1
    
        reason: BslSpecValidation
        status: "True"
        type: Accepted
      - lastTransitionTime: "2025-02-19T09:30:34Z"
        message: Secret successfully created in the OADP namespace 
    2
    
        reason: SecretCreated
        status: "True"
        type: SecretSynced
      - lastTransitionTime: "2025-02-19T09:30:34Z"
        message: BackupStorageLocation successfully created in the OADP namespace 
    3
    
        reason: BackupStorageLocationCreated
        status: "True"
        type: BackupStorageLocationSynced
      phase: Created
      veleroBackupStorageLocation:
        nacuuid: test-nac-..f933a-4ec1-4f6a-8099-ee...b8b26 
    4
    
        name: test-nac-test-nabsl-36...11ab8b26 
    5
    
        namespace: openshift-adp
        status:
          lastSyncedTime: "2025-02-19T11:47:10Z"
          lastValidationTime: "2025-02-19T11:47:31Z"
          phase: Available 
    6
    Copy to Clipboard Toggle word wrap

    1
    集群管理员验证并批准 NABSL 规格
    2
    secret 对象在 openshift-adp 命名空间中成功创建。
    3
    相关的 Velero BackupStorageLocationopenshift-adp 命名空间中成功创建。
    4
    nacuuid NAC 编排 NABSL CR。
    5
    关联的 Velero 备份存储位置对象的名称。
    6
    Available 阶段表示 NABSL 可供使用。

5.19.3.2. 创建 NonAdminBackup CR

作为命名空间 admin 用户,您可以创建一个 NonAdminBackup (NAB)自定义资源(CR)来从授权命名空间中备份应用程序。NAB 是一个 OpenShift Container Platform CR,可以安全地创建 Velero 备份对象。Velero 备份对象将状态报告回 NAB CR,该 CR 最终会更新 status.phase 字段。

创建 NAB CR 后,CR 会经历以下阶段:

  • CR 的初始阶段是 New
  • CR 创建请求进入 NonAdminController (NAC)以进行协调和验证。
  • 在成功验证并创建 Velero 备份对象后,NAB CR 的 status.phase 字段会更新至下一个阶段,即 Created

在创建 NAB CR 时,请查看以下重要点:

  • NonAdminBackup CR 安全地创建 Velero 备份对象,以便其他命名空间管理员用户无法访问 CR。
  • 作为命名空间 admin 用户,您只能在 NAB CR 中指定授权命名空间。当您指定没有授权使用的命名空间时,您会收到一个错误。

先决条件

  • 以命名空间 admin 用户身份登录集群。
  • 集群管理员已安装了 OADP Operator。
  • 集群管理员已将 DataProtectionApplication (DPA) CR 配置为启用 OADP Self-Service。
  • 集群管理员已为您创建了一个命名空间,并有权从该命名空间操作。
  • 可选:您可以创建并使用 NonAdminBackupStorageLocation (NABSL) CR 来存储备份数据。如果不使用 NABSL CR,则备份将存储在 DPA 中配置的默认备份存储位置。

流程

  1. 要创建 NonAdminBackup CR,请使用以下配置创建一个 YAML 清单文件:

    NonAdminBackup CR 示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminBackup
    metadata:
      name: test-nab 
    1
    
    spec:
      backupSpec:
        defaultVolumesToFsBackup: true 
    2
    
        snapshotMoveData: false 
    3
    
        storageLocation: test-bsl 
    4
    Copy to Clipboard Toggle word wrap

    1
    为 NAB CR 指定一个名称,如 test-nab
    2
    要使用文件系统备份(FSB),请将 defaultVolumesToFsBackup 设置为 true
    3
    如果要使用 Data Mover 备份数据卷,请将 snapshotMoveData 设置为 true。这个示例使用 FSB 进行备份。
    4
    另外,还可将 NABSL CR 设置为存储位置。如果您没有设置 storageLocation,则使用在 DPA 中配置的默认备份存储位置。
  2. 要应用 NAB CR 配置,请运行以下命令:

    $ oc apply -f <nab_cr_filename> 
    1
    Copy to Clipboard Toggle word wrap
    1
    指定包含 NAB CR 配置的文件名。

验证

  • 要验证 NAB CR 是否已成功创建,请运行以下命令:

    $ oc get nab test-nab -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminBackup
    metadata:
      creationTimestamp: "2025-03-06T10:02:56Z"
      finalizers:
      - nonadminbackup.oadp.openshift.io/finalizer
      generation: 2
      name: test-nab
      namespace: test-nac-ns 
    1
    
      resourceVersion: "134316"
      uid: c5...4c8a8
    spec:
      backupSpec:
        csiSnapshotTimeout: 0s
        defaultVolumesToFsBackup: true
        hooks: {}
        itemOperationTimeout: 0s
        metadata: {}
        storageLocation: test-bsl
        ttl: 0s
    status:
      conditions:
      - lastTransitionTime: "202...56Z"
        message: backup accepted 
    2
    
        reason: BackupAccepted
        status: "True"
        type: Accepted
      - lastTransitionTime: "202..T10:02:56Z"
        message: Created Velero Backup object
        reason: BackupScheduled
        status: "True"
        type: Queued
      dataMoverDataUploads: {}
      fileSystemPodVolumeBackups: 
    3
    
        completed: 2
        total: 2
      phase: Created 
    4
    
      queueInfo:
        estimatedQueuePosition: 0 
    5
    
      veleroBackup:
        nacuuid: test-nac-test-nab-d2...a9b14 
    6
    
        name: test-nac-test-nab-d2...b14 
    7
    
        namespace: openshift-adp
        spec:
          csiSnapshotTimeout: 10m0s
          defaultVolumesToFsBackup: true
          excludedResources:
          - nonadminbackups
          - nonadminrestores
          - nonadminbackupstoragelocations
          - securitycontextconstraints
          - clusterroles
          - clusterrolebindings
          - priorityclasses
          - customresourcedefinitions
          - virtualmachineclusterinstancetypes
          - virtualmachineclusterpreferences
          hooks: {}
          includedNamespaces:
          - test-nac-ns
          itemOperationTimeout: 4h0m0s
          metadata: {}
          snapshotMoveData: false
          storageLocation: test-nac-test-bsl-bf..02b70a
          ttl: 720h0m0s
        status: 
    8
    
          completionTimestamp: "2025-0..3:13Z"
          expiration: "2025..2:56Z"
          formatVersion: 1.1.0
          hookStatus: {}
          phase: Completed 
    9
    
          progress:
            itemsBackedUp: 46
            totalItems: 46
          startTimestamp: "2025-..56Z"
          version: 1
          warnings: 1
    Copy to Clipboard Toggle word wrap

    1
    Velero 备份对象上设置 NonAdminController CR 的命名空间名称来备份。
    2
    NAC 已协调并验证 NAB CR,并创建了 Velero 备份对象。
    3
    fileSystemPodVolumeBackups 字段指示使用 FSB 备份的卷数量。
    4
    NAB CR 处于 Created 阶段。
    5
    此字段表示备份对象的队列位置。过程中可以有多个备份,每个备份对象被分配一个队列位置。备份完成后,队列位置设置为 0。
    6
    NAC 创建 Velero 备份对象,并为 nacuuid 字段设置值。
    7
    关联的 Velero 备份对象的名称。
    8
    Velero 备份对象的状态。
    9
    Velero 备份对象处于 Completed 阶段,备份成功。

5.19.3.3. 创建 NonAdminRestore CR

作为命名空间 admin 用户,若要恢复备份,您可以创建一个 NonAdminRestore (NAR)自定义资源(CR)。备份恢复到授权的命名空间。

先决条件

  • 以命名空间 admin 用户身份登录集群。
  • 集群管理员已安装了 OADP Operator。
  • 集群管理员已将 DataProtectionApplication (DPA) CR 配置为启用 OADP Self-Service。
  • 集群管理员已为您创建了一个命名空间,并有权从该命名空间操作。
  • 您可以通过创建一个 NonAdminBackup (NAB) CR 来备份应用程序。

流程

  1. 要创建 NonAdminRestore CR,请使用以下配置创建一个 YAML 清单文件:

    NonAdminRestore CR 示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminRestore
    metadata:
      name: test-nar 
    1
    
    spec:
      restoreSpec:
        backupName: test-nab 
    2
    Copy to Clipboard Toggle word wrap

    1
    定义 NAR CR 的名称,如 test-nar
    2
    定义您要从中恢复的 NAB CR 的名称。例如,test-nab
  2. 要应用 NAR CR 配置,请运行以下命令:

    $ oc apply -f <nar_cr_filename> 
    1
    Copy to Clipboard Toggle word wrap
    1
    <nar_cr_filename > 替换为包含 NAR CR 配置的文件名。

验证

  1. 要验证 NAR CR 是否已成功创建,请运行以下命令:

    $ oc get nar test-nar -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminRestore
    metadata:
      creationTimestamp: "2025-..:15Z"
      finalizers:
      - nonadminrestore.oadp.openshift.io/finalizer
      generation: 2
      name: test-nar
      namespace: test-nac-ns
      resourceVersion: "156517"
      uid: f9f5...63ef34
    spec:
      restoreSpec:
        backupName: test-nab
        hooks: {}
        itemOperationTimeout: 0s
    status:
      conditions:
      - lastTransitionTime: "2025..15Z"
        message: restore accepted 
    1
    
        reason: RestoreAccepted
        status: "True"
        type: Accepted
      - lastTransitionTime: "2025-03-06T11:22:15Z"
        message: Created Velero Restore object
        reason: RestoreScheduled
        status: "True"
        type: Queued
      dataMoverDataDownloads: {}
      fileSystemPodVolumeRestores: 
    2
    
        completed: 2
        total: 2
      phase: Created 
    3
    
      queueInfo:
        estimatedQueuePosition: 0 
    4
    
      veleroRestore:
        nacuuid: test-nac-test-nar-c...1ba 
    5
    
        name: test-nac-test-nar-c7...1ba 
    6
    
        namespace: openshift-adp
        status:
          completionTimestamp: "2025...22:44Z"
          hookStatus: {}
          phase: Completed 
    7
    
          progress:
            itemsRestored: 28
            totalItems: 28
          startTimestamp: "2025..15Z"
          warnings: 7
    Copy to Clipboard Toggle word wrap

    1
    NonAdminController (NAC) CR 已协调并验证 NAR CR。
    2
    fileSystemPodVolumeRestores 字段指示要恢复的卷数量。
    3
    NAR CR 处于 Created 阶段。
    4
    此字段表示恢复对象的队列位置。过程中可以有多个恢复,每个恢复都会被分配一个队列位置。恢复完成后,队列位置设置为 0。
    5
    NAC 创建 Velero 恢复对象,并将值设置为 nacuuid
    6
    关联的 Velero 恢复对象的名称。
    7
    Velero 恢复对象处于 Completed 阶段,恢复成功。

5.19.3.4. 关于 NonAdminDownloadRequest CR

作为命名空间 admin 用户,您可以使用 NonAdminDownloadRequest (NADR)自定义资源(CR)访问备份和恢复的详细信息,以进行故障排除。

此 CR 提供了与集群管理员使用 velero 备份 describe --details 命令访问的信息。

验证 NADR CR 请求后,会生成一个安全下载 URL 以访问请求的信息。

您可以下载以下 NADR 资源:

Expand
表 5.8. NADR 资源

资源类型

描述

等同于

BackupResourceList

备份中包含的资源列表

Velero backup describe --details (资源列表)

BackupContents

备份的文件内容

备份详情的一部分

BackupLog

备份操作的日志

Velero 备份日志

BackupVolumeSnapshots

有关卷快照的信息

Velero 备份描述 --details (快照部分)

BackupItemOperations

有关备份过程中执行的项目操作的信息

Velero 备份描述 --details (操作部分)

RestoreLog

来自恢复操作的日志

Velero 恢复日志

RestoreResults

恢复的详细结果

Velero restore describe --details

5.19.3.5. 查看 NAB 和 NAR 日志

作为命名空间 admin 用户,您可以通过创建 NonAdminDownloadRequest (NADR) CR 来查看 NonAdminBackup (NAB)和 NonAdminRestore (NAR)自定义资源(CR)的日志。

注意

只有在使用 NonAdminBackupStorageLocation (NABSL) CR 作为备份的备份存储位置时,才能查看 NAB 日志。

先决条件

  • 以命名空间 admin 用户身份登录集群。
  • 集群管理员已安装了 OADP Operator。
  • 集群管理员已将 DataProtectionApplication (DPA) CR 配置为启用 OADP Self-Service。
  • 集群管理员已为您创建了一个命名空间,并有权从该命名空间操作。
  • 您可以通过创建一个 NAB CR 来备份应用程序。
  • 您已通过创建一个 NAR CR 来恢复应用程序。

流程

  1. 要查看 NAB CR 日志,请创建一个 NonAdminDownloadRequest CR,并指定 NAB CR 名称,如下例所示:

    NonAdminDownloadRequest CR 示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminDownloadRequest
    metadata:
      name: test-nadr-backup
    spec:
      target:
        kind: BackupLog 
    1
    
        name: test-nab 
    2
    Copy to Clipboard Toggle word wrap

    1
    指定 BackupLog 作为 NADR CR 的 kind 字段的值。
    2
    指定 NAB CR 的名称。
  2. 运行以下命令,验证 NADR CR 是否已处理。

    $ oc get nadr test-nadr-backup -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminDownloadRequest
    metadata:
      creationTimestamp: "2025-03-06T10:05:22Z"
      generation: 1
      name: test-nadr-backup
      namespace: test-nac-ns
      resourceVersion: "134866"
      uid: 520...8d9
    spec:
      target:
        kind: BackupLog
        name: test-nab
    status:
      conditions:
      - lastTransitionTime: "202...5:22Z"
        message: ""
        reason: Success
        status: "True"
        type: Processed
      phase: Created
      velero:
        status:
          downloadURL: https://... 
    1
    
          expiration: "202...22Z"
          phase: Processed 
    2
    Copy to Clipboard Toggle word wrap

    1
    status.downloadURL 字段包含 NAB 日志的下载 URL。您可以使用 downloadURL 下载并查看 NAB 日志。
    2
    status.phase is Processed
  3. 使用 status.downloadURL URL 下载和分析备份信息。
  4. 要查看 NAR CR 日志,请创建一个 NonAdminDownloadRequest CR,并指定 NAR CR 名称,如下例所示:

    NonAdminDownloadRequest CR 示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminDownloadRequest
    metadata:
      name: test-nadr-restore
    spec:
      target:
        kind: RestoreLog 
    1
    
        name: test-nar 
    2
    Copy to Clipboard Toggle word wrap

    1
    指定 RestoreLog 作为 NADR CR 的 kind 字段的值。
    2
    定义 NAR CR 的名称。
  5. 运行以下命令,验证 NADR CR 是否已处理。

    $ oc get nadr test-nadr-restore -o yaml
    Copy to Clipboard Toggle word wrap

    输出示例

    apiVersion: oadp.openshift.io/v1alpha1
    kind: NonAdminDownloadRequest
    metadata:
      creationTimestamp: "2025-03-06T11:26:01Z"
      generation: 1
      name: test-nadr-restore
      namespace: test-nac-ns
      resourceVersion: "157842"
      uid: f3e...7862f
    spec:
      target:
        kind: RestoreLog
        name: test-nar
    status:
      conditions:
      - lastTransitionTime: "202..:01Z"
        message: ""
        reason: Success
        status: "True"
        type: Processed
      phase: Created
      velero:
        status:
          downloadURL: https://... 
    1
    
          expiration: "202..:01Z"
          phase: Processed 
    2
    Copy to Clipboard Toggle word wrap

    1
    status.downloadURL 字段包含 NAR 日志的下载 URL。您可以使用 downloadURL 下载并查看 NAR 日志。
    2
    status.phase is Processed
  6. 使用 status.downloadURL URL 下载和分析恢复信息。

5.19.4. OADP 自助服务故障排除

在使用 OADP Self-Service 时,您可以使用以下部分排除常见错误。

请考虑以下命名空间 管理员 备份的场景:

  • 您已在两个不同的命名空间中创建了两个 NonAdminBackupStorageLocations (NABLs)自定义资源(CR),例如,namespace-1 中的 nabsl-1namespace-2 中的 nabsl-2
  • 您需要对 namespace-1 进行备份,并在 NonAdminBackup (NAB) CR 中使用 nabsl-2

在这种情况下,在创建 NAB CR 后会出现以下错误:

NonAdminBackupStorageLocation not found in the namespace: NonAdminBackupStorageLocation.oadp.openshift.io
Copy to Clipboard Toggle word wrap

造成错误的原因是 NABSL CR 不属于您要备份的命名空间。

错误

apiVersion: oadp.openshift.io/v1alpha1
kind: NonAdminBackup
...
status:
  conditions:
  - lastTransitionTime: "2025-02-20T10:13:00Z"
  message: 'NonAdminBackupStorageLocation not found in the namespace: NonAdminBackupStorageLocation.oadp.openshift.io
    "nabsl2" not found'
  reason: InvalidBackupSpec
  status: "False"
  type: Accepted
  phase: BackingOff
Copy to Clipboard Toggle word wrap

解决方案

使用属于您要备份的同一命名空间的 NABSL。

在这种情况下,您必须在 NAB CR 中使用 nabsl-1 来备份 namespace-1

作为非管理员用户,如果您在授权命名空间中创建了 NonAdminBackupStorageLocation (NABSL)自定义资源(CR),则无法将 NABSL CR 设置为默认备份存储位置。

在这种情况下,NABSL CR 无法验证,NonAdminController (NAC)会显示错误消息。

NABSL 错误示例

apiVersion: oadp.openshift.io/v1alpha1
kind: NonAdminBackupStorageLocation
metadata:
  creationTimestamp: "20...:03Z"
  generation: 1
  name: nabsl1
  namespace: test-nac-1
  resourceVersion: "11...9"
  uid: 8d2fc....c9b6c4401
spec:
  backupStorageLocationSpec:
    credential:
      key: cloud
      name: cloud-credentials-gcp
    default: true 
1

    objectStorage:
      bucket: oad..7l8
      prefix: velero
    provider: gcp
status:
  conditions:
  - lastTransitionTime: "20...:27:03Z"
    message: NonAdminBackupStorageLocation cannot be used as a default BSL 
2

    reason: BslSpecValidation
    status: "False"
    type: Accepted
  phase: BackingOff
Copy to Clipboard Toggle word wrap

1
default 字段的值设置为 true
2
NAC 报告的错误消息。

解决方案

要成功验证并协调 NABSL CR,请确保在 NABSL CR 中的 default 字段设置为 false

返回顶部
Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

Theme

© 2025 Red Hat