4.3. 安装和配置 OADP

4.3.1. 关于安装 OADP

作为集群管理员,您可以通过安装 OADP Operator 来为数据保护(OADP)安装 OpenShift API。OADP Operator 会安装 Velero 1.7

注意

从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本都只能用作 MTC Operator 的依赖项,且不适用于独立 Operator。

要备份 Kubernetes 资源和内部镜像,必须将对象存储用作备份位置,如以下存储类型之一:

重要

CloudStorage API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

您可以使用快照或 Restic 备份持久性卷(PV)。

要使用快照备份 PV,您必须有一个支持原生快照 API 或 Container Storage Interface(CSI)快照的云供应商,如以下云供应商之一:

如果您的云供应商不支持快照,或者您的存储是 NFS,您可以在对象存储中使用 Restic 备份 来备份应用程序。

您可以创建一个默认 Secret,然后安装数据保护应用程序。

4.3.1.1. AWS S3 兼容备份存储供应商

OADP 与许多对象存储供应商兼容,用于不同的备份和恢复操作。一些对象存储供应商被完全支持,一些不被支持但可以正常工作,另外一些有已知的限制。

4.3.1.1.1. 支持的备份存储供应商

通过 AWS 插件,以下 AWS S3 兼容对象存储供应商被 OADP 完全支持作为备份存储:

  • MinIO
  • 带有 NooBaa 的多云对象网关 (MCG)
  • Amazon Web Services (AWS) S3
注意

支持以下兼容对象存储供应商,并有自己的 Velero 对象存储插件:

  • Google Cloud Platform (GCP)
  • Microsoft Azure
4.3.1.1.2. 不支持的备份存储供应商

通过 AWS 插件,以下 AWS S3 兼容对象存储供应商可以与 Velero 一起正常工作作为备份存储,但它们不被支持,且还没有经过红帽测试:

  • IBM Cloud
  • Oracle Cloud
  • DigitalOcean
  • NooBaa
  • Tencent Cloud
  • Ceph RADOS v12.2.7
  • Quobyte
  • Cloudian HyperStore
4.3.1.1.3. 带有已知限制的备份存储供应商

通过 AWS 插件,以下 AWS S3 兼容对象存储供应商可以与 Velero 搭配使用,但有一些已知的限制:

  • Swift - 它可以作为备份存储的备份存储位置,但对于基于文件系统的卷备份和恢复,它与 Restic 不兼容。

4.3.1.2. 在 OpenShift Data Foundation 上为灾难恢复配置 NooBaa

如果您在 OpenShift Data Foundation 上为 NooBaa bucket backupStorageLocation 使用集群存储,请将 NooBaa 配置为外部对象存储。

警告

将 NooBaa 配置为外部对象存储可能会导致备份不可用。

流程

其他资源

/// 模块包含在以下 assemblies 中:

4.3.1.3. 关于 OADP 更新频道

安装 OADP Operator 时,您可以选择更新频道。这个频道决定到您接收到的 OADP Operator 和 Velero 的哪些升级。您可以随时切换频道。

可用的更新频道如下:

  • stable 频道现已弃用。stable 频道包含 oadp.v1.1.z 和自 oadp.v1.0.z 的更老版本的 OADP ClusterServiceVersion 的补丁 (z-stream 更新)。
  • stable-1.0 频道包含 oadp.v1.0.z,它是最新的 OADP 1.0 ClusterServiceVersion
  • stable-1.1 频道包含 oadp.v1.1.z,它是最新的 OADP 1.1 ClusterServiceVersion
  • stable-1.2 频道包括 oadp.v1.2.z,最新的 OADP 1.2 ClusterServiceVersion

哪个更新频道适合您?

  • stable 频道现已弃用。如果您已使用 stable 频道,则继续从 oadp.v1.1.z 获取更新。
  • 选择 stable-1.y 更新频道来安装 OADP 1.y,并继续为其接受补丁。如果您选择此频道,您将收到版本 1.y.z 的所有 z-stream。

何时需要切换更新频道?

  • 如果您安装了 OADP 1.y,并且只想接收那个 y-stream 的补丁,则必须从 stable 更新频道切换到 stable-1.y 更新频道。然后,您将收到版本 1.y.z 的所有 z-stream 补丁。
  • 如果您安装了 OADP 1.0,希望升级到 OADP 1.1,然后只接收 OADP 1.1 的补丁,则必须从 stable-1.0 更新频道切换到 stable-1.1 更新频道。然后,您将收到版本 1.1.z 的所有 z-stream 补丁。
  • 如果您安装了 OADP 1.y,且 y 大于 0,并且希望切换到 OADP 1.0,则必须 卸载 OADP Operator,然后使用 stable-1.0 更新频道重新安装。然后,您将收到 1.0.z 版本的所有 z-stream 补丁。
注意

您无法通过切换更新频道从 OADP 1.y 切换到 OADP 1.0。您必须卸载 Operator,然后重新安装它。

4.3.1.4. 在多个命名空间中安装 OADP

您可以将 OADP 安装到同一集群中的多个命名空间中,以便多个项目所有者可以管理自己的 OADP 实例。这个用例已通过 Restic 和 CSI 验证。

您可以根据本文档中包含的每个平台流程指定安装每个 OADP 实例,并有以下额外的要求:

  • 同一集群中的所有 OADP 部署都必须相同版本,如 1.1.4。不支持在同一集群中安装 OADP 的不同版本。
  • 每个 OADP 部署都必须具有一组唯一的凭证和唯一的 BackupStorageLocation 配置。
  • 默认情况下,每个 OADP 部署在不同的命名空间中都有集群级别的访问权限。OpenShift Container Platform 管理员需要仔细检查安全性和 RBAC 设置,并对它们进行任何更改,以确保每个 OADP 实例都有正确的权限。

其他资源

4.3.2. 为 Amazon Web Services 进行数据保护安装和配置 OpenShift API

您可以通过安装 OADP Operator,使用 Amazon Web Services (AWS) 安装 OpenShift API for Data Protection (OADP)。Operator 会安装 Velero 1.7

注意

从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本都只能用作 MTC Operator 的依赖项,且不适用于独立 Operator。

您可以为 Velero 配置 AWS,创建一个默认 Secret,然后安装数据保护应用程序。

要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager

4.3.2.1. 安装 OADP Operator

您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.10 上安装 Data Protection(OADP)Operator 的 OpenShift API。

OADP Operator 会安装 Velero 1.7

先决条件

  • 您必须以具有 cluster-admin 权限的用户身份登录。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
  2. 使用 Filter by keyword 字段查找 OADP Operator
  3. 选择 OADP Operator 并点 Install
  4. Installopenshift-adp 项目中安装 Operator。
  5. OperatorsInstalled Operators 来验证安装。

4.3.2.2. 配置 Amazon Web Services

您可以为 OpenShift API 配置 Amazon Web Services(AWS)以进行数据保护(OADP)。

先决条件

流程

  1. 设置 BUCKET 变量:

    $ BUCKET=<your_bucket>
  2. 设置 REGION 变量:

    $ REGION=<your_region>
  3. 创建 AWS S3 存储桶:

    $ aws s3api create-bucket \
        --bucket $BUCKET \
        --region $REGION \
        --create-bucket-configuration LocationConstraint=$REGION 1
    1
    us-east-1 不支持 LocationConstraint。如果您的区域是 us-east-1,忽略 --create-bucket-configuration LocationConstraint=$REGION
  4. 创建一个 IAM 用户:

    $ aws iam create-user --user-name velero 1
    1
    如果要使用 Velero 备份具有多个 S3 存储桶的集群,请为每个集群创建一个唯一用户名。
  5. 创建 velero-policy.json 文件:

    $ cat > velero-policy.json <<EOF
    {
        "Version": "2012-10-17",
        "Statement": [
            {
                "Effect": "Allow",
                "Action": [
                    "ec2:DescribeVolumes",
                    "ec2:DescribeSnapshots",
                    "ec2:CreateTags",
                    "ec2:CreateVolume",
                    "ec2:CreateSnapshot",
                    "ec2:DeleteSnapshot"
                ],
                "Resource": "*"
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:GetObject",
                    "s3:DeleteObject",
                    "s3:PutObject",
                    "s3:AbortMultipartUpload",
                    "s3:ListMultipartUploadParts"
                ],
                "Resource": [
                    "arn:aws:s3:::${BUCKET}/*"
                ]
            },
            {
                "Effect": "Allow",
                "Action": [
                    "s3:ListBucket",
                    "s3:GetBucketLocation",
                    "s3:ListBucketMultipartUploads"
                ],
                "Resource": [
                    "arn:aws:s3:::${BUCKET}"
                ]
            }
        ]
    }
    EOF
  6. 附加策略,为 velero 用户提供所需的最低权限:

    $ aws iam put-user-policy \
      --user-name velero \
      --policy-name velero \
      --policy-document file://velero-policy.json
  7. velero 用户创建访问密钥:

    $ aws iam create-access-key --user-name velero

    输出示例

    {
      "AccessKey": {
            "UserName": "velero",
            "Status": "Active",
            "CreateDate": "2017-07-31T22:24:41.576Z",
            "SecretAccessKey": <AWS_SECRET_ACCESS_KEY>,
            "AccessKeyId": <AWS_ACCESS_KEY_ID>
      }
    }

  8. 创建 credentials-velero 文件:

    $ cat << EOF > ./credentials-velero
    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    EOF

    在安装数据保护应用程序前,您可以使用 credentials-velero 文件为 AWS 创建 Secret 对象。

4.3.2.3. 关于备份和恢复位置及其 secret

您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。

备份位置

您可以将 S3 兼容对象存储(如 Multicloud Object Gateway、Noobaa 或 Minio )指定为备份位置。

Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像备份为对象存储上的存档文件。

快照位置

如果使用云供应商的原生快照 API 备份持久性卷,您必须将云供应商指定为快照位置。

如果使用 Container Storage Interface(CSI)快照,则不需要指定快照位置,因为您要创建一个 VolumeSnapshotClass CR 来注册 CSI 驱动程序。

如果使用 Restic,则不需要指定快照位置,因为 Restic 备份对象存储中的文件系统。

Secrets

如果备份和快照位置使用相同的凭证,或者不需要快照位置,请创建一个默认 Secret

如果备份和恢复位置使用不同的凭证,您可以创建两个 secret 对象:

  • 您在 DataProtectionApplication CR 中指定的备份位置的自定义 Secret
  • 快照位置的默认 Secret,在 DataProtectionApplication CR 中没有引用。
重要

数据保护应用程序需要一个默认的 Secret。否则,安装将失败。

如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret

4.3.2.3.1. 创建默认 Secret

如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret

Secret 的默认名称为 cloud-credentials

注意

DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。

如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret

先决条件

  • 您的对象存储和云存储(若有)必须使用相同的凭证。
  • 您必须为 Velero 配置对象存储。
  • 您必须以适当的格式为对象存储创建一个 credentials-velero 文件。

流程

  • 使用默认名称创建 Secret

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero

在安装 Data Protection Application 时,secret 会在 DataProtectionApplication CR 的 spec.backupLocations.credential 块中引用。

4.3.2.3.2. 为不同凭证创建配置集

如果您的备份和快照位置使用不同的凭证,您可以在 credentials-velero 文件中创建单独的配置集。

然后,您可以创建一个 Secret 对象并在 DataProtectionApplication 自定义资源(CR)中指定配置集。

流程

  1. 使用备份和快照位置的独立配置集创建一个 credentials-velero 文件,如下例所示:

    [backupStorage]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    
    [volumeSnapshot]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
  2. 使用 credentials-velero 文件创建 Secret 对象:

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero 1
  3. DataProtectionApplication CR 中添加配置集,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
            config:
              region: us-east-1
              profile: "backupStorage"
            credential:
              key: cloud
              name: cloud-credentials
      snapshotLocations:
        - name: default
          velero:
            provider: aws
            config:
              region: us-west-2
              profile: "volumeSnapshot"

4.3.2.4. 配置数据保护应用程序

您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。

4.3.2.4.1. 设置 Velero CPU 和内存分配

您可以通过编辑 DataProtectionApplication 自定义资源(CR)清单来为 Velero pod 设置 CPU 和内存分配。

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.configuration.velero.podConfig.ResourceAllocations 块中的值,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node selector> 1
            resourceAllocations:
              limits:
                cpu: "1"
                memory: 512Mi
              requests:
                cpu: 500m
                memory: 256Mi
    1 1
    指定要提供给 Velero podSpec 的节点选择器。
4.3.2.4.2. 启用自签名 CA 证书

您必须通过编辑 DataProtectionApplication 自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.backupLocations.velero.objectStorage.caCert 参数和 spec.backupLocations.velero.config 参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 1
            config:
              insecureSkipTLSVerify: "false" 2
    ...
    1
    指定 Base46 编码的 CA 证书字符串。
    2
    insecureSkipTLSVerify 配置可以设置为 "true""false "。如果设置为 "true",则禁用 SSL/TLS 安全性。如果设置为 "false",则启用 SSL/TLS 安全性。

4.3.2.5. 安装数据保护应用程序

您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。

先决条件

  • 您必须安装 OADP Operator。
  • 您必须将对象存储配置为备份位置。
  • 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
  • 如果备份和快照位置使用相同的凭证,您必须创建带有默认名称 cloud-credentialsSecret
  • 如果备份和快照位置使用不同的凭证,则必须使用默认名称 cloud-credentials 创建一个 Secret,其中包含备份和快照位置凭证的独立配置集。

    注意

    如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret。如果没有默认 Secret,安装将失败。

流程

  1. OperatorsInstalled Operators 并选择 OADP Operator。
  2. Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例
  3. YAML View 并更新 DataProtectionApplication 清单的参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
      configuration:
        velero:
          defaultPlugins:
            - openshift 1
            - aws
          resourceTimeout: 10m 2
        restic:
          enable: true 3
          podConfig:
            nodeSelector: <node_selector> 4
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name> 5
              prefix: <prefix> 6
            config:
              region: <region>
              profile: "default"
            credential:
              key: cloud
              name: cloud-credentials 7
      snapshotLocations: 8
        - name: default
          velero:
            provider: aws
            config:
              region: <region> 9
              profile: "default"
    1
    openshift 插件是必需的。
    2
    指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
    3
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以备份。
    4
    指定 Restic 在哪些节点上可用。默认情况下,Restic 在所有节点上运行。
    5
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    6
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero
    7
    指定您创建的 Secret 对象的名称。如果没有指定这个值,则使用默认值 cloud-credentials。如果您指定了自定义名称,则使用自定义名称进行备份位置。
    8
    指定快照位置,除非您使用 CSI 快照或 Restic 备份 PV。
    9
    快照位置必须与 PV 位于同一区域。
  4. Create
  5. 通过查看 OADP 资源来验证安装:

    $ oc get all -n openshift-adp

    输出示例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/restic-9cq4q                                         1/1     Running   0          94s
    pod/restic-m4lts                                         1/1     Running   0          94s
    pod/restic-pv4kr                                         1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    
    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/restic   3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s

4.3.2.5.1. 在 DataProtectionApplication CR 中启用 CSI

您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。

先决条件

  • 云供应商必须支持 CSI 快照。

流程

  • 编辑 DataProtectionApplication CR,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 1
    1
    添加 csi 默认插件。

4.3.3. 为 Microsoft Azure 的数据保护安装和配置 OpenShift API

您可以通过安装 OADP Operator,使用 Microsoft Azure 安装 OpenShift API for Data Protection (OADP)。Operator 会安装 Velero 1.7

注意

从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本都只能用作 MTC Operator 的依赖项,且不适用于独立 Operator。

您可以为 Velero 配置 Azure,创建一个默认 Secret,然后安装数据保护应用程序。

要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager

4.3.3.1. 安装 OADP Operator

您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.10 上安装 Data Protection(OADP)Operator 的 OpenShift API。

OADP Operator 会安装 Velero 1.7

先决条件

  • 您必须以具有 cluster-admin 权限的用户身份登录。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
  2. 使用 Filter by keyword 字段查找 OADP Operator
  3. 选择 OADP Operator 并点 Install
  4. Installopenshift-adp 项目中安装 Operator。
  5. OperatorsInstalled Operators 来验证安装。

4.3.3.2. 配置 Microsoft Azure

您可以为 OpenShift API 配置 Microsoft Azure 以进行数据保护(OADP)。

先决条件

流程

  1. 登录到 Azure:

    $ az login
  2. 设置 AZURE_RESOURCE_GROUP 变量:

    $ AZURE_RESOURCE_GROUP=Velero_Backups
  3. 创建 Azure 资源组:

    $ az group create -n $AZURE_RESOURCE_GROUP --location CentralUS 1
    1
    指定位置。
  4. 设置 AZURE_STORAGE_ACCOUNT_ID 变量:

    $ AZURE_STORAGE_ACCOUNT_ID="velero$(uuidgen | cut -d '-' -f5 | tr '[A-Z]' '[a-z]')"
  5. 创建 Azure 存储帐户:

    $ az storage account create \
        --name $AZURE_STORAGE_ACCOUNT_ID \
        --resource-group $AZURE_RESOURCE_GROUP \
        --sku Standard_GRS \
        --encryption-services blob \
        --https-only true \
        --kind BlobStorage \
        --access-tier Hot
  6. 设置 BLOB_CONTAINER 变量:

    $ BLOB_CONTAINER=velero
  7. 创建 Azure Blob 存储容器:

    $ az storage container create \
      -n $BLOB_CONTAINER \
      --public-access off \
      --account-name $AZURE_STORAGE_ACCOUNT_ID
  8. 获取存储帐户访问密钥:

    $ AZURE_STORAGE_ACCOUNT_ACCESS_KEY=`az storage account keys list \
      --account-name $AZURE_STORAGE_ACCOUNT_ID \
      --query "[?keyName == 'key1'].value" -o tsv`
  9. 创建具有最低所需权限的自定义角色:

    AZURE_ROLE=Velero
    az role definition create --role-definition '{
       "Name": "'$AZURE_ROLE'",
       "Description": "Velero related permissions to perform backups, restores and deletions",
       "Actions": [
           "Microsoft.Compute/disks/read",
           "Microsoft.Compute/disks/write",
           "Microsoft.Compute/disks/endGetAccess/action",
           "Microsoft.Compute/disks/beginGetAccess/action",
           "Microsoft.Compute/snapshots/read",
           "Microsoft.Compute/snapshots/write",
           "Microsoft.Compute/snapshots/delete",
           "Microsoft.Storage/storageAccounts/listkeys/action",
           "Microsoft.Storage/storageAccounts/regeneratekey/action"
       ],
       "AssignableScopes": ["/subscriptions/'$AZURE_SUBSCRIPTION_ID'"]
       }'
  10. 创建 credentials-velero 文件:

    $ cat << EOF > ./credentials-velero
    AZURE_SUBSCRIPTION_ID=${AZURE_SUBSCRIPTION_ID}
    AZURE_TENANT_ID=${AZURE_TENANT_ID}
    AZURE_CLIENT_ID=${AZURE_CLIENT_ID}
    AZURE_CLIENT_SECRET=${AZURE_CLIENT_SECRET}
    AZURE_RESOURCE_GROUP=${AZURE_RESOURCE_GROUP}
    AZURE_STORAGE_ACCOUNT_ACCESS_KEY=${AZURE_STORAGE_ACCOUNT_ACCESS_KEY} 1
    AZURE_CLOUD_NAME=AzurePublicCloud
    EOF
    1
    必需。如果 credentials-velero 文件只包含服务主体凭证,则无法备份内部镜像。

    在安装 Data Protection 应用前,您可以使用 credentials-velero 文件为 Azure 创建 Secret 对象。

4.3.3.3. 关于备份和恢复位置及其 secret

您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。

备份位置

您可以将 S3 兼容对象存储(如 Multicloud Object Gateway、Noobaa 或 Minio )指定为备份位置。

Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像备份为对象存储上的存档文件。

快照位置

如果使用云供应商的原生快照 API 备份持久性卷,您必须将云供应商指定为快照位置。

如果使用 Container Storage Interface(CSI)快照,则不需要指定快照位置,因为您要创建一个 VolumeSnapshotClass CR 来注册 CSI 驱动程序。

如果使用 Restic,则不需要指定快照位置,因为 Restic 备份对象存储中的文件系统。

Secrets

如果备份和快照位置使用相同的凭证,或者不需要快照位置,请创建一个默认 Secret

如果备份和恢复位置使用不同的凭证,您可以创建两个 secret 对象:

  • 您在 DataProtectionApplication CR 中指定的备份位置的自定义 Secret
  • 快照位置的默认 Secret,在 DataProtectionApplication CR 中没有引用。
重要

数据保护应用程序需要一个默认的 Secret。否则,安装将失败。

如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret

4.3.3.3.1. 创建默认 Secret

如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret

Secret 的默认名称为 cloud-credentials-azure

注意

DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。

如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret

先决条件

  • 您的对象存储和云存储(若有)必须使用相同的凭证。
  • 您必须为 Velero 配置对象存储。
  • 您必须以适当的格式为对象存储创建一个 credentials-velero 文件。

流程

  • 使用默认名称创建 Secret

    $ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero

在安装 Data Protection Application 时,secret 会在 DataProtectionApplication CR 的 spec.backupLocations.credential 块中引用。

4.3.3.3.2. 为不同凭证创建 secret

如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret 对象:

  • 具有自定义名称的备份位置 Secret。自定义名称在 DataProtectionApplication 自定义资源(CR)的 spec.backupLocations 块中指定。
  • 带有默认名称 cloud-credentials-azure 的快照位置 Secret。此 Secret 不在 DataProtectionApplication CR 中指定。

流程

  1. 为您的云供应商为快照位置创建一个 credentials-velero 文件。
  2. 使用默认名称为快照位置创建 Secret

    $ oc create secret generic cloud-credentials-azure -n openshift-adp --from-file cloud=credentials-velero
  3. 为您的对象存储创建一个用于备份位置的 credentials-velero 文件。
  4. 使用自定义名称为备份位置创建 Secret

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
  5. 将带有自定义名称的 Secret 添加到 DataProtectionApplication CR 中,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            config:
              resourceGroup: <azure_resource_group>
              storageAccount: <azure_storage_account_id>
              subscriptionId: <azure_subscription_id>
              storageAccountKeyEnvVar: AZURE_STORAGE_ACCOUNT_ACCESS_KEY
            credential:
              key: cloud
              name: <custom_secret> 1
            provider: azure
            default: true
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
      snapshotLocations:
        - velero:
            config:
              resourceGroup: <azure_resource_group>
              subscriptionId: <azure_subscription_id>
              incremental: "true"
            name: default
            provider: azure
    1
    具有自定义名称的备份位置 Secret

4.3.3.4. 配置数据保护应用程序

您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。

4.3.3.4.1. 设置 Velero CPU 和内存分配

您可以通过编辑 DataProtectionApplication 自定义资源(CR)清单来为 Velero pod 设置 CPU 和内存分配。

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.configuration.velero.podConfig.ResourceAllocations 块中的值,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node selector> 1
            resourceAllocations:
              limits:
                cpu: "1"
                memory: 512Mi
              requests:
                cpu: 500m
                memory: 256Mi
    1
    指定要提供给 Velero podSpec 的节点选择器。
4.3.3.4.2. 启用自签名 CA 证书

您必须通过编辑 DataProtectionApplication 自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.backupLocations.velero.objectStorage.caCert 参数和 spec.backupLocations.velero.config 参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 1
            config:
              insecureSkipTLSVerify: "false" 2
    ...
    1
    指定 Base46 编码的 CA 证书字符串。
    2
    insecureSkipTLSVerify 配置可以设置为 "true""false "。如果设置为 "true",则禁用 SSL/TLS 安全性。如果设置为 "false",则启用 SSL/TLS 安全性。

4.3.3.5. 安装数据保护应用程序

您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。

先决条件

  • 您必须安装 OADP Operator。
  • 您必须将对象存储配置为备份位置。
  • 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
  • 如果备份和快照位置使用相同的凭证,您必须创建带有默认名称 cloud-credentials-azureSecret
  • 如果备份和快照位置使用不同的凭证,您必须创建两个 Secret

    • 带有备份位置的自定义名称的 secret。您可以将此 Secret 添加到 DataProtectionApplication CR 中。
    • 带有默认名称 cloud-credentials-azuresecret,用于快照位置。这个 Secret 不在 DataProtectionApplication CR 中被引用。

      注意

      如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret。如果没有默认 Secret,安装将失败。

流程

  1. OperatorsInstalled Operators 并选择 OADP Operator。
  2. Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例
  3. YAML View 并更新 DataProtectionApplication 清单的参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
      configuration:
        velero:
          defaultPlugins:
            - azure
            - openshift 1
          resourceTimeout: 10m 2
        restic:
          enable: true 3
          podConfig:
            nodeSelector: <node_selector> 4
      backupLocations:
        - velero:
            config:
              resourceGroup: <azure_resource_group> 5
              storageAccount: <azure_storage_account_id> 6
              subscriptionId: <azure_subscription_id> 7
              storageAccountKeyEnvVar: AZURE_STORAGE_ACCOUNT_ACCESS_KEY
            credential:
              key: cloud
              name: cloud-credentials-azure  8
            provider: azure
            default: true
            objectStorage:
              bucket: <bucket_name> 9
              prefix: <prefix> 10
      snapshotLocations: 11
        - velero:
            config:
              resourceGroup: <azure_resource_group>
              subscriptionId: <azure_subscription_id>
              incremental: "true"
            name: default
            provider: azure
    1
    openshift 插件是必需的。
    2
    指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
    3
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以备份。
    4
    指定 Restic 在哪些节点上可用。默认情况下,Restic 在所有节点上运行。
    5
    指定 Azure 资源组。
    6
    指定 Azure 存储帐户 ID。
    7
    指定 Azure 订阅 ID。
    8
    如果没有指定这个值,则使用默认值 cloud-credentials-azure。如果您指定了自定义名称,则使用自定义名称进行备份位置。
    9
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    10
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero
    11
    如果您使用 CSI 快照或 Restic 备份 PV,则不需要指定快照位置。
  4. Create
  5. 通过查看 OADP 资源来验证安装:

    $ oc get all -n openshift-adp

    输出示例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/restic-9cq4q                                         1/1     Running   0          94s
    pod/restic-m4lts                                         1/1     Running   0          94s
    pod/restic-pv4kr                                         1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    
    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/restic   3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s

4.3.3.5.1. 在 DataProtectionApplication CR 中启用 CSI

您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。

先决条件

  • 云供应商必须支持 CSI 快照。

流程

  • 编辑 DataProtectionApplication CR,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 1
    1
    添加 csi 默认插件。

4.3.4. 安装和配置 OpenShift API 以进行 Google Cloud Platform 的数据保护

您可以通过安装 OADP Operator,使用 Google Cloud Platform (GCP) 安装 OpenShift API for Data Protection (OADP)。Operator 会安装 Velero 1.7

注意

从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本都只能用作 MTC Operator 的依赖项,且不适用于独立 Operator。

您可以为 Velero 配置 GCP,创建一个默认 Secret,然后安装数据保护应用程序。

要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager

4.3.4.1. 安装 OADP Operator

您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.10 上安装 Data Protection(OADP)Operator 的 OpenShift API。

OADP Operator 会安装 Velero 1.7

先决条件

  • 您必须以具有 cluster-admin 权限的用户身份登录。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
  2. 使用 Filter by keyword 字段查找 OADP Operator
  3. 选择 OADP Operator 并点 Install
  4. Installopenshift-adp 项目中安装 Operator。
  5. OperatorsInstalled Operators 来验证安装。

4.3.4.2. 配置 Google Cloud Platform

对于数据保护(OADP),您可以为 OpenShift API 配置 Google Cloud Platform(GCP)。

先决条件

  • 您必须安装了 gcloudgsutil CLI 工具。详情请查看 Google 云文档

流程

  1. 登录到 GCP:

    $ gcloud auth login
  2. 设置 BUCKET 变量:

    $ BUCKET=<bucket> 1
    1
    指定存储桶名称。
  3. 创建存储桶:

    $ gsutil mb gs://$BUCKET/
  4. PROJECT_ID 变量设置为您的活跃项目:

    $ PROJECT_ID=$(gcloud config get-value project)
  5. 创建服务帐户:

    $ gcloud iam service-accounts create velero \
        --display-name "Velero service account"
  6. 列出服务帐户:

    $ gcloud iam service-accounts list
  7. 设置 SERVICE_ACCOUNT_EMAIL 变量,使其与 email 值匹配:

    $ SERVICE_ACCOUNT_EMAIL=$(gcloud iam service-accounts list \
        --filter="displayName:Velero service account" \
        --format 'value(email)')
  8. 附加策略,为 velero 用户提供所需的最低权限:

    $ ROLE_PERMISSIONS=(
        compute.disks.get
        compute.disks.create
        compute.disks.createSnapshot
        compute.snapshots.get
        compute.snapshots.create
        compute.snapshots.useReadOnly
        compute.snapshots.delete
        compute.zones.get
        storage.objects.create
        storage.objects.delete
        storage.objects.get
        storage.objects.list
        iam.serviceAccounts.signBlob
    )
  9. 创建 velero.server 自定义角色:

    $ gcloud iam roles create velero.server \
        --project $PROJECT_ID \
        --title "Velero Server" \
        --permissions "$(IFS=","; echo "${ROLE_PERMISSIONS[*]}")"
  10. 为项目添加 IAM 策略绑定:

    $ gcloud projects add-iam-policy-binding $PROJECT_ID \
        --member serviceAccount:$SERVICE_ACCOUNT_EMAIL \
        --role projects/$PROJECT_ID/roles/velero.server
  11. 更新 IAM 服务帐户:

    $ gsutil iam ch serviceAccount:$SERVICE_ACCOUNT_EMAIL:objectAdmin gs://${BUCKET}
  12. 将 IAM 服务帐户的密钥保存到当前目录中的 credentials-velero 文件中:

    $ gcloud iam service-accounts keys create credentials-velero \
        --iam-account $SERVICE_ACCOUNT_EMAIL

    在安装 Data Protection Application 前,您可以使用 credentials-velero 文件为 GCP 创建 Secret 对象。

4.3.4.3. 关于备份和恢复位置及其 secret

您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。

备份位置

您可以将 S3 兼容对象存储(如 Multicloud Object Gateway、Noobaa 或 Minio )指定为备份位置。

Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像备份为对象存储上的存档文件。

快照位置

如果使用云供应商的原生快照 API 备份持久性卷,您必须将云供应商指定为快照位置。

如果使用 Container Storage Interface(CSI)快照,则不需要指定快照位置,因为您要创建一个 VolumeSnapshotClass CR 来注册 CSI 驱动程序。

如果使用 Restic,则不需要指定快照位置,因为 Restic 备份对象存储中的文件系统。

Secrets

如果备份和快照位置使用相同的凭证,或者不需要快照位置,请创建一个默认 Secret

如果备份和恢复位置使用不同的凭证,您可以创建两个 secret 对象:

  • 您在 DataProtectionApplication CR 中指定的备份位置的自定义 Secret
  • 快照位置的默认 Secret,在 DataProtectionApplication CR 中没有引用。
重要

数据保护应用程序需要一个默认的 Secret。否则,安装将失败。

如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret

4.3.4.3.1. 创建默认 Secret

如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret

Secret 的默认名称为 cloud-credentials-gcp

注意

DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。

如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret

先决条件

  • 您的对象存储和云存储(若有)必须使用相同的凭证。
  • 您必须为 Velero 配置对象存储。
  • 您必须以适当的格式为对象存储创建一个 credentials-velero 文件。

流程

  • 使用默认名称创建 Secret

    $ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero

在安装 Data Protection Application 时,secret 会在 DataProtectionApplication CR 的 spec.backupLocations.credential 块中引用。

4.3.4.3.2. 为不同凭证创建 secret

如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret 对象:

  • 具有自定义名称的备份位置 Secret。自定义名称在 DataProtectionApplication 自定义资源(CR)的 spec.backupLocations 块中指定。
  • 带有默认名称 cloud-credentials-gcp 的快照位置 Secret。此 Secret 不在 DataProtectionApplication CR 中指定。

流程

  1. 为您的云供应商为快照位置创建一个 credentials-velero 文件。
  2. 使用默认名称为快照位置创建 Secret

    $ oc create secret generic cloud-credentials-gcp -n openshift-adp --from-file cloud=credentials-velero
  3. 为您的对象存储创建一个用于备份位置的 credentials-velero 文件。
  4. 使用自定义名称为备份位置创建 Secret

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
  5. 将带有自定义名称的 Secret 添加到 DataProtectionApplication CR 中,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            provider: gcp
            default: true
            credential:
              key: cloud
              name: <custom_secret> 1
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
      snapshotLocations:
        - velero:
            provider: gcp
            default: true
            config:
              project: <project>
              snapshotLocation: us-west1
    1
    具有自定义名称的备份位置 Secret

4.3.4.4. 配置数据保护应用程序

您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。

4.3.4.4.1. 设置 Velero CPU 和内存分配

您可以通过编辑 DataProtectionApplication 自定义资源(CR)清单来为 Velero pod 设置 CPU 和内存分配。

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.configuration.velero.podConfig.ResourceAllocations 块中的值,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node selector> 1
            resourceAllocations:
              limits:
                cpu: "1"
                memory: 512Mi
              requests:
                cpu: 500m
                memory: 256Mi
    1
    指定要提供给 Velero podSpec 的节点选择器。
4.3.4.4.2. 启用自签名 CA 证书

您必须通过编辑 DataProtectionApplication 自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.backupLocations.velero.objectStorage.caCert 参数和 spec.backupLocations.velero.config 参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 1
            config:
              insecureSkipTLSVerify: "false" 2
    ...
    1
    指定 Base46 编码的 CA 证书字符串。
    2
    insecureSkipTLSVerify 配置可以设置为 "true""false "。如果设置为 "true",则禁用 SSL/TLS 安全性。如果设置为 "false",则启用 SSL/TLS 安全性。

4.3.4.5. 安装数据保护应用程序

您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。

先决条件

  • 您必须安装 OADP Operator。
  • 您必须将对象存储配置为备份位置。
  • 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
  • 如果备份和快照位置使用相同的凭证,您必须创建带有默认名称 cloud-credentials-gcpSecret
  • 如果备份和快照位置使用不同的凭证,您必须创建两个 Secret

    • 带有备份位置的自定义名称的 secret。您可以将此 Secret 添加到 DataProtectionApplication CR 中。
    • 带有默认名称 cloud-credentials-gcpsecret,用于快照位置。这个 Secret 不在 DataProtectionApplication CR 中被引用。

      注意

      如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret。如果没有默认 Secret,安装将失败。

流程

  1. OperatorsInstalled Operators 并选择 OADP Operator。
  2. Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例
  3. YAML View 并更新 DataProtectionApplication 清单的参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
      configuration:
        velero:
          defaultPlugins:
            - gcp
            - openshift 1
          resourceTimeout: 10m 2
        restic:
          enable: true 3
          podConfig:
            nodeSelector: <node_selector> 4
      backupLocations:
        - velero:
            provider: gcp
            default: true
            credential:
              key: cloud
              name: cloud-credentials-gcp 5
            objectStorage:
              bucket: <bucket_name> 6
              prefix: <prefix> 7
      snapshotLocations: 8
        - velero:
            provider: gcp
            default: true
            config:
              project: <project>
              snapshotLocation: us-west1 9
    1
    openshift 插件是必需的。
    2
    指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
    3
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以备份。
    4
    指定 Restic 在哪些节点上可用。默认情况下,Restic 在所有节点上运行。
    5
    如果没有指定这个值,则使用默认值 cloud-credentials-gcp。如果您指定了自定义名称,则使用自定义名称进行备份位置。
    6
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    7
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero
    8
    指定快照位置,除非您使用 CSI 快照或 Restic 备份 PV。
    9
    快照位置必须与 PV 位于同一区域。
  4. Create
  5. 通过查看 OADP 资源来验证安装:

    $ oc get all -n openshift-adp

    输出示例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/restic-9cq4q                                         1/1     Running   0          94s
    pod/restic-m4lts                                         1/1     Running   0          94s
    pod/restic-pv4kr                                         1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    
    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/restic   3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s

4.3.4.5.1. 在 DataProtectionApplication CR 中启用 CSI

您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。

先决条件

  • 云供应商必须支持 CSI 快照。

流程

  • 编辑 DataProtectionApplication CR,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 1
    1
    添加 csi 默认插件。

4.3.5. 安装和配置 OpenShift API 以进行 Google Cloud Platform 的数据保护

您可以通过安装 OADP Operator,使用 Multicloud Object Gateway (MCG) 安装 OpenShift API for Data Protection (OADP)。Operator 会安装 Velero 1.7

注意

从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本都只能用作 MTC Operator 的依赖项,且不适用于独立 Operator。

您可以将 Multicloud 对象网关 配置为备份位置。MCG 是 OpenShift Data Foundation 的一个组件。您可以将 MCG 配置为 DataProtectionApplication 自定义资源(CR)中的备份位置。

重要

CloudStorage API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

为备份位置创建一个 Secret,然后安装数据保护应用程序。

要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager

4.3.5.1. 安装 OADP Operator

您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.10 上安装 Data Protection(OADP)Operator 的 OpenShift API。

OADP Operator 会安装 Velero 1.7

先决条件

  • 您必须以具有 cluster-admin 权限的用户身份登录。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
  2. 使用 Filter by keyword 字段查找 OADP Operator
  3. 选择 OADP Operator 并点 Install
  4. Installopenshift-adp 项目中安装 Operator。
  5. OperatorsInstalled Operators 来验证安装。

4.3.5.2. 检索多云对象网关凭证

您必须检索 Multicloud Object Gateway(MCG)凭证,以便为 OpenShift API 创建用于数据保护(OADP)的 Secret 自定义资源(CR)。

MCG 是 OpenShift Data Foundation 的一个组件。

先决条件

流程

  1. 通过对 NooBaa 自定义资源运行 describe 命令,获取 S3 端点、AWS_ACCESS_KEY_IDAWS_SECRET_ACCESS_KEY
  2. 创建 credentials-velero 文件:

    $ cat << EOF > ./credentials-velero
    [default]
    aws_access_key_id=<AWS_ACCESS_KEY_ID>
    aws_secret_access_key=<AWS_SECRET_ACCESS_KEY>
    EOF

    在安装 Data Protection Application 时,您可以使用 credentials-velero 文件创建 Secret 对象。

4.3.5.3. 关于备份和恢复位置及其 secret

您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。

备份位置

您可以将 S3 兼容对象存储(如 Multicloud Object Gateway、Noobaa 或 Minio )指定为备份位置。

Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像备份为对象存储上的存档文件。

快照位置

如果使用云供应商的原生快照 API 备份持久性卷,您必须将云供应商指定为快照位置。

如果使用 Container Storage Interface(CSI)快照,则不需要指定快照位置,因为您要创建一个 VolumeSnapshotClass CR 来注册 CSI 驱动程序。

如果使用 Restic,则不需要指定快照位置,因为 Restic 备份对象存储中的文件系统。

Secrets

如果备份和快照位置使用相同的凭证,或者不需要快照位置,请创建一个默认 Secret

如果备份和恢复位置使用不同的凭证,您可以创建两个 secret 对象:

  • 您在 DataProtectionApplication CR 中指定的备份位置的自定义 Secret
  • 快照位置的默认 Secret,在 DataProtectionApplication CR 中没有引用。
重要

数据保护应用程序需要一个默认的 Secret。否则,安装将失败。

如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret

4.3.5.3.1. 创建默认 Secret

如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret

Secret 的默认名称为 cloud-credentials

注意

DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。

如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret

先决条件

  • 您的对象存储和云存储(若有)必须使用相同的凭证。
  • 您必须为 Velero 配置对象存储。
  • 您必须以适当的格式为对象存储创建一个 credentials-velero 文件。

流程

  • 使用默认名称创建 Secret

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero

在安装 Data Protection Application 时,secret 会在 DataProtectionApplication CR 的 spec.backupLocations.credential 块中引用。

4.3.5.3.2. 为不同凭证创建 secret

如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret 对象:

  • 具有自定义名称的备份位置 Secret。自定义名称在 DataProtectionApplication 自定义资源(CR)的 spec.backupLocations 块中指定。
  • 带有默认名称 cloud-credentials 的快照位置 Secret。此 Secret 不在 DataProtectionApplication CR 中指定。

流程

  1. 为您的云供应商为快照位置创建一个 credentials-velero 文件。
  2. 使用默认名称为快照位置创建 Secret

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
  3. 为您的对象存储创建一个用于备份位置的 credentials-velero 文件。
  4. 使用自定义名称为备份位置创建 Secret

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
  5. 将带有自定义名称的 Secret 添加到 DataProtectionApplication CR 中,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            config:
              profile: "default"
              region: minio
              s3Url: <url>
              insecureSkipTLSVerify: "true"
              s3ForcePathStyle: "true"
            provider: aws
            default: true
            credential:
              key: cloud
              name:  <custom_secret> 1
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
    1
    具有自定义名称的备份位置 Secret

4.3.5.4. 配置数据保护应用程序

您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。

4.3.5.4.1. 设置 Velero CPU 和内存分配

您可以通过编辑 DataProtectionApplication 自定义资源(CR)清单来为 Velero pod 设置 CPU 和内存分配。

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.configuration.velero.podConfig.ResourceAllocations 块中的值,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node selector> 1
            resourceAllocations:
              limits:
                cpu: "1"
                memory: 512Mi
              requests:
                cpu: 500m
                memory: 256Mi
    1
    指定要提供给 Velero podSpec 的节点选择器。
4.3.5.4.2. 启用自签名 CA 证书

您必须通过编辑 DataProtectionApplication 自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.backupLocations.velero.objectStorage.caCert 参数和 spec.backupLocations.velero.config 参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 1
            config:
              insecureSkipTLSVerify: "false" 2
    ...
    1
    指定 Base46 编码的 CA 证书字符串。
    2
    insecureSkipTLSVerify 配置可以设置为 "true""false "。如果设置为 "true",则禁用 SSL/TLS 安全性。如果设置为 "false",则启用 SSL/TLS 安全性。

4.3.5.5. 安装数据保护应用程序

您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。

先决条件

  • 您必须安装 OADP Operator。
  • 您必须将对象存储配置为备份位置。
  • 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
  • 如果备份和快照位置使用相同的凭证,您必须创建带有默认名称 cloud-credentialsSecret
  • 如果备份和快照位置使用不同的凭证,您必须创建两个 Secret

    • 带有备份位置的自定义名称的 secret。您可以将此 Secret 添加到 DataProtectionApplication CR 中。
    • 带有默认名称 cloud-credentialssecret,用于快照位置。这个 Secret 没有在 DataProtectionApplication CR 中被引用。

      注意

      如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret。如果没有默认 Secret,安装将失败。

流程

  1. OperatorsInstalled Operators 并选择 OADP Operator。
  2. Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例
  3. YAML View 并更新 DataProtectionApplication 清单的参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
      configuration:
        velero:
          defaultPlugins:
            - aws
            - openshift 1
          resourceTimeout: 10m 2
        restic:
          enable: true 3
          podConfig:
            nodeSelector: <node_selector> 4
      backupLocations:
        - velero:
            config:
              profile: "default"
              region: minio
              s3Url: <url> 5
              insecureSkipTLSVerify: "true"
              s3ForcePathStyle: "true"
            provider: aws
            default: true
            credential:
              key: cloud
              name: cloud-credentials 6
            objectStorage:
              bucket: <bucket_name> 7
              prefix: <prefix> 8
    1
    openshift 插件是必需的。
    2
    指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
    3
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以备份。
    4
    指定 Restic 在哪些节点上可用。默认情况下,Restic 在所有节点上运行。
    5
    指定 S3 端点的 URL。
    6
    如果没有指定这个值,则使用默认值 cloud-credentials。如果您指定了自定义名称,则使用自定义名称进行备份位置。
    7
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    8
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero
  4. Create
  5. 通过查看 OADP 资源来验证安装:

    $ oc get all -n openshift-adp

    输出示例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/restic-9cq4q                                         1/1     Running   0          94s
    pod/restic-m4lts                                         1/1     Running   0          94s
    pod/restic-pv4kr                                         1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    
    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/restic   3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s

4.3.5.5.1. 在 DataProtectionApplication CR 中启用 CSI

您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。

先决条件

  • 云供应商必须支持 CSI 快照。

流程

  • 编辑 DataProtectionApplication CR,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 1
    1
    添加 csi 默认插件。

4.3.6. 使用 OpenShift Data Foundation 安装和配置 OpenShift API for Data Protection

您可以通过安装 OADP Operator 并配置备份位置和快照位置,在 OpenShift Data Foundation 中安装 OpenShift API for Data Protection (OADP)。然后,您要安装数据保护应用程序。

注意

从 OADP 1.0.4 开始,所有 OADP 1.0.z 版本都只能用作 MTC Operator 的依赖项,且不适用于独立 Operator。

您可以将 Multicloud 对象网关 或任何与 S3 兼容对象存储配置为备份位置。

重要

CloudStorage API(它自动为对象存储创建一个存储桶)只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。

有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围

为备份位置创建一个 Secret,然后安装数据保护应用程序。

要在受限网络环境中安装 OADP Operator,您必须首先禁用默认的 OperatorHub 源并镜像 Operator 目录。详情请参阅在受限网络中使用 Operator Lifecycle Manager

4.3.6.1. 安装 OADP Operator

您可以使用 Operator Lifecycle Manager(OLM)在 OpenShift Container Platform 4.10 上安装 Data Protection(OADP)Operator 的 OpenShift API。

OADP Operator 会安装 Velero 1.7

先决条件

  • 您必须以具有 cluster-admin 权限的用户身份登录。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
  2. 使用 Filter by keyword 字段查找 OADP Operator
  3. 选择 OADP Operator 并点 Install
  4. Installopenshift-adp 项目中安装 Operator。
  5. OperatorsInstalled Operators 来验证安装。

4.3.6.2. 关于备份和恢复位置及其 secret

您可以在 DataProtectionApplication 自定义资源(CR)中指定备份和快照位置及其 secret。

备份位置

您可以将 S3 兼容对象存储(如 Multicloud Object Gateway、Noobaa 或 Minio )指定为备份位置。

Velero 将 OpenShift Container Platform 资源、Kubernetes 对象和内部镜像备份为对象存储上的存档文件。

快照位置

如果使用云供应商的原生快照 API 备份持久性卷,您必须将云供应商指定为快照位置。

如果使用 Container Storage Interface(CSI)快照,则不需要指定快照位置,因为您要创建一个 VolumeSnapshotClass CR 来注册 CSI 驱动程序。

如果使用 Restic,则不需要指定快照位置,因为 Restic 备份对象存储中的文件系统。

Secrets

如果备份和快照位置使用相同的凭证,或者不需要快照位置,请创建一个默认 Secret

如果备份和恢复位置使用不同的凭证,您可以创建两个 secret 对象:

  • 您在 DataProtectionApplication CR 中指定的备份位置的自定义 Secret
  • 快照位置的默认 Secret,在 DataProtectionApplication CR 中没有引用。
重要

数据保护应用程序需要一个默认的 Secret。否则,安装将失败。

如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret

4.3.6.2.1. 创建默认 Secret

如果您的备份和快照位置使用相同的凭证,或者不需要快照位置,则创建一个默认 Secret

Secret 的默认名称为 cloud-credentials,除非备份存储供应商有一个默认插件,如 awsazuregcp。在这种情况下,默认名称是在特定于供应商的 OADP 安装过程中指定。

注意

DataProtectionApplication 自定义资源(CR)需要一个默认的 Secret。否则,安装将失败。如果没有指定备份位置 Secret 的名称,则会使用默认名称。

如果您不想在安装过程中使用备份位置凭证,您可以使用空 credentials-velero 文件创建带有默认名称的 Secret

先决条件

  • 您的对象存储和云存储(若有)必须使用相同的凭证。
  • 您必须为 Velero 配置对象存储。
  • 您必须以适当的格式为对象存储创建一个 credentials-velero 文件。

流程

  • 使用默认名称创建 Secret

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero

在安装 Data Protection Application 时,secret 会在 DataProtectionApplication CR 的 spec.backupLocations.credential 块中引用。

4.3.6.2.2. 为不同凭证创建 secret

如果您的备份和恢复位置使用不同的凭证,您必须创建两个 Secret 对象:

  • 具有自定义名称的备份位置 Secret。自定义名称在 DataProtectionApplication 自定义资源(CR)的 spec.backupLocations 块中指定。
  • 带有默认名称 cloud-credentials 的快照位置 Secret。此 Secret 不在 DataProtectionApplication CR 中指定。

流程

  1. 为您的云供应商为快照位置创建一个 credentials-velero 文件。
  2. 使用默认名称为快照位置创建 Secret

    $ oc create secret generic cloud-credentials -n openshift-adp --from-file cloud=credentials-velero
  3. 为您的对象存储创建一个用于备份位置的 credentials-velero 文件。
  4. 使用自定义名称为备份位置创建 Secret

    $ oc create secret generic <custom_secret> -n openshift-adp --from-file cloud=credentials-velero
  5. 将带有自定义名称的 Secret 添加到 DataProtectionApplication CR 中,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
    ...
      backupLocations:
        - velero:
            provider: <provider>
            default: true
            credential:
              key: cloud
              name: <custom_secret> 1
            objectStorage:
              bucket: <bucket_name>
              prefix: <prefix>
    1
    具有自定义名称的备份位置 Secret

4.3.6.3. 配置数据保护应用程序

您可以通过设置 Velero 资源分配或启用自签名 CA 证书来配置数据保护应用程序。

4.3.6.3.1. 设置 Velero CPU 和内存分配

您可以通过编辑 DataProtectionApplication 自定义资源(CR)清单来为 Velero pod 设置 CPU 和内存分配。

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.configuration.velero.podConfig.ResourceAllocations 块中的值,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      configuration:
        velero:
          podConfig:
            nodeSelector: <node selector> 1
            resourceAllocations:
              limits:
                cpu: "1"
                memory: 512Mi
              requests:
                cpu: 500m
                memory: 256Mi
    1
    指定要提供给 Velero podSpec 的节点选择器。
4.3.6.3.2. 启用自签名 CA 证书

您必须通过编辑 DataProtectionApplication 自定义资源(CR)清单来为对象存储启用自签名 CA 证书,以防止由未知颁发机构签名的证书

先决条件

  • 您必须安装了 OpenShift API for Data Protection(OADP)Operator。

流程

  • 编辑 DataProtectionApplication CR 清单的 spec.backupLocations.velero.objectStorage.caCert 参数和 spec.backupLocations.velero.config 参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
    spec:
    ...
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket>
              prefix: <prefix>
              caCert: <base64_encoded_cert_string> 1
            config:
              insecureSkipTLSVerify: "false" 2
    ...
    1
    指定 Base46 编码的 CA 证书字符串。
    2
    insecureSkipTLSVerify 配置可以设置为 "true""false "。如果设置为 "true",则禁用 SSL/TLS 安全性。如果设置为 "false",则启用 SSL/TLS 安全性。

4.3.6.4. 安装数据保护应用程序

您可以通过创建 DataProtectionApplication API 的实例来安装数据保护应用程序(DPA)。

先决条件

  • 您必须安装 OADP Operator。
  • 您必须将对象存储配置为备份位置。
  • 如果使用快照来备份 PV,云供应商必须支持原生快照 API 或 Container Storage Interface(CSI)快照。
  • 如果备份和快照位置使用相同的凭证,您必须创建带有默认名称 cloud-credentialsSecret
  • 如果备份和快照位置使用不同的凭证,您必须创建两个 Secret

    • 带有备份位置的自定义名称的 secret。您可以将此 Secret 添加到 DataProtectionApplication CR 中。
    • 带有默认名称 cloud-credentialssecret,用于快照位置。这个 Secret 没有在 DataProtectionApplication CR 中被引用。

      注意

      如果您不想在安装过程中指定备份或快照位置,您可以使用空 credentials-velero 文件创建默认 Secret。如果没有默认 Secret,安装将失败。

流程

  1. OperatorsInstalled Operators 并选择 OADP Operator。
  2. Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例
  3. YAML View 并更新 DataProtectionApplication 清单的参数:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    metadata:
      name: <dpa_sample>
      namespace: openshift-adp
    spec:
      configuration:
        velero:
          defaultPlugins:
            - kubevirt 1
            - gcp 2
            - csi 3
            - openshift 4
          resourceTimeout: 10m 5
        restic:
          enable: true 6
          podConfig:
            nodeSelector: <node_selector> 7
      backupLocations:
        - velero:
            provider: gcp 8
            default: true
            credential:
              key: cloud
              name: <default_secret> 9
            objectStorage:
              bucket: <bucket_name> 10
              prefix: <prefix> 11
    1
    可选: kubevirt 插件用于 OpenShift Virtualization。
    2
    为备份供应商指定默认插件,如 gcp (如果适用)。
    3
    如果使用 CSI 快照备份 PV,请指定 csi 默认插件。csi 插件使用 Velero CSI beta 快照 API。您不需要配置快照位置。
    4
    openshift 插件是必需的。
    5
    指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
    6
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以备份。
    7
    指定 Restic 在哪些节点上可用。默认情况下,Restic 在所有节点上运行。
    8
    指定备份供应商。
    9
    如果备份供应商使用一个默认插件,为 Secret 指定正确的默认名称,如 cloud-credentials-gcp。如果指定了一个自定义名称,则使用自定义名称用于备份位置。如果没有指定 Secret 名称,则使用默认名称。
    10
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    11
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero
  4. Create
  5. 通过查看 OADP 资源来验证安装:

    $ oc get all -n openshift-adp

    输出示例

    NAME                                                     READY   STATUS    RESTARTS   AGE
    pod/oadp-operator-controller-manager-67d9494d47-6l8z8    2/2     Running   0          2m8s
    pod/restic-9cq4q                                         1/1     Running   0          94s
    pod/restic-m4lts                                         1/1     Running   0          94s
    pod/restic-pv4kr                                         1/1     Running   0          95s
    pod/velero-588db7f655-n842v                              1/1     Running   0          95s
    
    NAME                                                       TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)    AGE
    service/oadp-operator-controller-manager-metrics-service   ClusterIP   172.30.70.140    <none>        8443/TCP   2m8s
    
    NAME                    DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR   AGE
    daemonset.apps/restic   3         3         3       3            3           <none>          96s
    
    NAME                                                READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/oadp-operator-controller-manager    1/1     1            1           2m9s
    deployment.apps/velero                              1/1     1            1           96s
    
    NAME                                                           DESIRED   CURRENT   READY   AGE
    replicaset.apps/oadp-operator-controller-manager-67d9494d47    1         1         1       2m9s
    replicaset.apps/velero-588db7f655                              1         1         1       96s

4.3.6.4.1. 在 OpenShift Data Foundation 上为灾难恢复配置 NooBaa

如果您在 OpenShift Data Foundation 上为 NooBaa bucket backupStorageLocation 使用集群存储,请将 NooBaa 配置为外部对象存储。

警告

将 NooBaa 配置为外部对象存储可能会导致备份不可用。

流程

4.3.6.4.2. 在 DataProtectionApplication CR 中启用 CSI

您可以在 DataProtectionApplication 自定义资源(CR)中启用 Container Storage Interface(CSI)来备份持久性卷,以使用 CSI 快照备份持久性卷。

先决条件

  • 云供应商必须支持 CSI 快照。

流程

  • 编辑 DataProtectionApplication CR,如下例所示:

    apiVersion: oadp.openshift.io/v1alpha1
    kind: DataProtectionApplication
    ...
    spec:
      configuration:
        velero:
          defaultPlugins:
          - openshift
          - csi 1
    1
    添加 csi 默认插件。

4.3.7. 为数据保护卸载 OpenShift API

您可以通过删除 OADP Operator 来卸载 OpenShift API for Data Protection(OADP)。详情请参阅从集群中删除 Operator