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 资源和内部镜像,必须将对象存储用作备份位置,如以下存储类型之一:

重要

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

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

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

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

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

您可以为存储供应商凭证创建一个 Secret 对象,然后安装数据保护应用程序。

4.3.1.1. 配置 NooBaa 以便在 OpenShift Container Storage 上进行灾难恢复

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

警告

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

流程

其他资源

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

4.3.1.2. 关于 OADP 更新频道

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

有三个更新频道:

  • stable 频道包含 OADP ClusterServiceVersion' 的最新次要更新 (y-stream 更新) 和补丁 (z-stream 更新)。当发布每个新版本时,OADP Operator 的可用 ClusterServiceVersion 将附加最新的可用次要补丁。
  • stable-1.0 频道包含 oadp.v1.0.z,它是最新的 OADP 1.0 ClusterServiceVersion
  • stable-1.1 频道包含 oadp.v1.1.z,它是最新的 OADP 1.1 ClusterServiceVersion

哪个更新频道适合您?

  • 选择 stable 更新频道来安装最新的 stable OADP 版本,并接收次要更新和补丁。如果您选择此频道,您将收到版本 x.y.z 的所有 y-stream 和 z-stream 的更新。
  • 选择 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.2. 为 Amazon Web Services 进行数据保护安装和配置 OpenShift API

您可以通过安装 OADP Operator、为 Velero 配置 AWS,然后安装数据保护应用程序,安装带有 Amazon Web Services(AWS)的数据保护(OADP)的 OpenShift API。

注意

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

重要

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

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

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

4.3.2.1. 安装 OADP Operator

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

OADP Operator 会安装 Velero 1.7

先决条件

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

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
  2. 使用 Filter by keyword 字段查找 OADP Operator
  3. 选择 OADP Operator 并点 Install
  4. Installopenshift-adp 项目中安装 Operator。
  5. Operators Installed 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

如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret 对象。

Secret 的默认名称为 cloud-credentials

先决条件

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

    注意

    DataProtectionApplication 自定义资源(CR)需要一个 Secret 进行安装。如果没有指定 spec.backupLocations.credential.name 值,则会使用默认名称。

    如果您不想指定备份位置或快照位置,则必须使用空 credentials-velero 文件创建带有默认名称的 Secret

流程

  • 使用默认名称创建 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.1. 为不同的备份和恢复位置凭证配置 secret

如果您的备份和快照位置使用不同的凭证,您可以在 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. Operators Installed 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
        restic:
          enable: true 2
          podConfig:
            nodeSelector: <node selector> 3
      backupLocations:
        - name: default
          velero:
            provider: aws
            default: true
            objectStorage:
              bucket: <bucket_name> 4
              prefix: <prefix> 5
            config:
              region: <region>
              profile: "default"
            credential:
              key: cloud
              name: cloud-credentials 6
      snapshotLocations: 7
        - name: default
          velero:
            provider: aws
            config:
              region: <region> 8
              profile: "default"
    1
    openshift 插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。
    2
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以进行备份。
    3
    指定要提供给 Restic podSpec 的节点选择器。
    4
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    5
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero
    6
    指定您创建的 Secret 对象的名称。如果没有指定这个值,则使用默认值 cloud-credentials。如果您指定了自定义名称,则使用自定义名称进行备份位置。
    7
    如果您使用 CSI 快照或 Restic 备份 PV,则不需要指定快照位置。
    8
    快照位置必须与 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、为 Velero 配置 Azure,然后安装数据保护应用程序,使用 Microsoft Azure 安装 OpenShift API for Data ProtectionP。

注意

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

重要

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

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

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

4.3.3.1. 安装 OADP Operator

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

OADP Operator 会安装 Velero 1.7

先决条件

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

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
  2. 使用 Filter by keyword 字段查找 OADP Operator
  3. 选择 OADP Operator 并点 Install
  4. Installopenshift-adp 项目中安装 Operator。
  5. Operators Installed 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

如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret 对象。

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

先决条件

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

    注意

    DataProtectionApplication 自定义资源(CR)需要一个 Secret 进行安装。如果没有指定 spec.backupLocations.credential.name 值,则会使用默认名称。

    如果您不想指定备份位置或快照位置,则必须使用空 credentials-velero 文件创建带有默认名称的 Secret

流程

  • 使用默认名称创建 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.1. 为不同的备份和恢复位置凭证配置 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. Operators Installed 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
        restic:
          enable: true 2
          podConfig:
            nodeSelector: <node selector> 3
      backupLocations:
        - velero:
            config:
              resourceGroup: <azure_resource_group> 4
              storageAccount: <azure_storage_account_id> 5
              subscriptionId: <azure_subscription_id> 6
              storageAccountKeyEnvVar: AZURE_STORAGE_ACCOUNT_ACCESS_KEY
            credential:
              key: cloud
              name: cloud-credentials-azure  7
            provider: azure
            default: true
            objectStorage:
              bucket: <bucket_name> 8
              prefix: <prefix> 9
      snapshotLocations: 10
        - velero:
            config:
              resourceGroup: <azure_resource_group>
              subscriptionId: <azure_subscription_id>
              incremental: "true"
            name: default
            provider: azure
    1
    openshift 插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。
    2
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以进行备份。
    3
    指定要提供给 Restic podSpec 的节点选择器。
    4
    指定 Azure 资源组。
    5
    指定 Azure 存储帐户 ID。
    6
    指定 Azure 订阅 ID。
    7
    如果没有指定这个值,则使用默认值 cloud-credentials-azure。如果您指定了自定义名称,则使用自定义名称进行备份位置。
    8
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    9
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero
    10
    如果您使用 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、为 Velero 配置 GCP,然后安装数据保护应用程序,使用 Google Cloud Platform(GCP)安装 OpenShift API for Data Protection(GCP)。

注意

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

重要

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

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

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

4.3.4.1. 安装 OADP Operator

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

OADP Operator 会安装 Velero 1.7

先决条件

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

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 Operators OperatorHub
  2. 使用 Filter by keyword 字段查找 OADP Operator
  3. 选择 OADP Operator 并点 Install
  4. Installopenshift-adp 项目中安装 Operator。
  5. Operators Installed 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
    )
  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

如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret 对象。

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

先决条件

  • 对象存储和云存储必须使用相同的凭证。
  • 您必须为 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.1. 为不同的备份和恢复位置凭证配置 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. Operators Installed 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
        restic:
          enable: true 2
          podConfig:
            nodeSelector: <node selector> 3
      backupLocations:
        - velero:
            provider: gcp
            default: true
            credential:
              key: cloud
              name: cloud-credentials-gcp 4
            objectStorage:
              bucket: <bucket_name> 5
              prefix: <prefix> 6
      snapshotLocations: 7
        - velero:
            provider: gcp
            default: true
            config:
              project: <project>
              snapshotLocation: us-west1 8
    1
    openshift 插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。
    2
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以进行备份。
    3
    指定要提供给 Restic podSpec 的节点选择器。
    4
    如果没有指定这个值,则使用默认值 cloud-credentials-gcp。如果您指定了自定义名称,则使用自定义名称进行备份位置。
    5
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    6
    如果存储桶用于多个目的,请为 Velero 备份指定一个前缀,如 velero
    7
    如果您使用 CSI 快照或 Restic 备份 PV,则不需要指定快照位置。
    8
    快照位置必须与 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、创建 Secret 对象,然后安装数据保护应用程序,安装带有 Multicloud Object Gateway(MCG)的数据保护(OADP)的 OpenShift API。

注意

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

MCG 是 OpenShift Container Storage(OCS)的一个组件。您可以将 MCG 配置为 DataProtectionApplication 自定义资源(CR)中的备份位置。

重要

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

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

如果您的云供应商具有原生快照 API,请配置快照位置。如果您的云供应商不支持快照,或者存储是 NFS,您可以使用 Restic 创建备份。

您不需要在 Restic 或 Container Storage Interface(CSI)快照的 DataProtectionApplication CR 中指定快照位置。

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

4.3.5.1. 安装 OADP Operator

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

OADP Operator 会安装 Velero 1.7

先决条件

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

流程

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

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

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

MCG 是 OpenShift Container Storage 的一个组件。

先决条件

流程

  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

如果使用相同的凭证,您可以为备份和快照位置创建一个 Secret 对象。

Secret 的默认名称为 cloud-credentials

先决条件

  • 对象存储和云存储必须使用相同的凭证。
  • 您必须为 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.1. 为不同的备份和恢复位置凭证配置 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:
      configuration:
        velero:
          defaultPlugins:
            - aws
            - openshift
        restic:
          enable: true
      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. Operators Installed 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
        restic:
          enable: true 2
          podConfig:
            nodeSelector: <node selector> 3
      backupLocations:
        - velero:
            config:
              profile: "default"
              region: minio
              s3Url: <url> 4
              insecureSkipTLSVerify: "true"
              s3ForcePathStyle: "true"
            provider: aws
            default: true
            credential:
              key: cloud
              name: cloud-credentials 5
            objectStorage:
              bucket: <bucket_name> 6
              prefix: <prefix> 7
    1
    openshift 插件是必须的,才能在 OpenShift Container Platform 集群上备份和恢复命名空间。
    2
    如果要禁用 Restic 安装,设置为 false。Restic 部署一个守护进程集,这意味着每个 worker 节点都运行有 Restic pod。您可以通过在 Backup CR 中添加 spec.defaultVolumesToRestic: true 来配置 Restic 以进行备份。
    3
    指定要提供给 Restic podSpec 的节点选择器。
    4
    指定 S3 端点的 URL。
    5
    如果没有指定这个值,则使用默认值 cloud-credentials。如果您指定了自定义名称,则使用自定义名称进行备份位置。
    6
    指定存储桶作为备份存储位置。如果存储桶不是 Velero 备份的专用存储桶,您必须指定一个前缀。
    7
    如果存储桶用于多个目的,请为 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 Container Storage 的数据保护安装和配置 OpenShift API

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

注意

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

您可以在 DataProtectionApplication 自定义资源(CR)中将 Multicloud Object Gateway 或任何 S3 兼容对象存储配置为备份位置。

重要

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

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

如果云供应商具有原生快照 API,您可以在 DataProtectionApplication CR 中将云存储配置为快照位置。您不需要为 Restic 或 Container Storage Interface(CSI)快照指定快照。

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

4.3.6.1. 安装 OADP Operator

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

OADP Operator 会安装 Velero 1.7

先决条件

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

流程

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

安装 OADP Operator 后,如果云供应商支持原生快照 API,将对象存储配置为备份位置,云存储为快照位置。

如果云供应商不支持快照,或者存储是 NFS,您可以使用 Restic 创建备份。Restic 不需要快照位置。

4.3.6.2. 创建用于备份和快照位置的 secret

如果使用相同的凭证,您可以为备份和快照位置创建一个 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.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

    注意

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

流程

  1. Operators Installed Operators 并选择 OADP Operator。
  2. Provided APIs 下,点 DataProtectionApplication 框中的 Create 实例
  3. YAML View 并更新 DataProtectionApplication 清单的参数:
  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. 配置 NooBaa 以便在 OpenShift Container Storage 上进行灾难恢复

如果您在 OpenShift Container Storage 上为 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

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.