第 15 章 备份和恢复

15.1. 安装和配置 OADP

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

您可以为备份存储供应商创建一个默认 Secret,然后安装数据保护应用程序。

15.1.1. 安装 OADP Operator

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

OADP Operator 安装 Velero 1.12

先决条件

  • 您必须以具有 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 来验证安装。

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

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

备份位置

您可以将 S3 兼容对象存储(如 Multicloud Object Gateway 或 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

15.1.2.1. 创建默认 Secret

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

注意

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 块中引用。

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

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

15.1.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: 2
              limits:
                cpu: "1"
                memory: 1024Mi
              requests:
                cpu: 200m
                memory: 256Mi
    1
    指定要提供给 Velero podSpec 的节点选择器。
    2
    列出的 resourceAllocations 用于平均使用。

15.1.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
    指定以 Base64 编码的 CA 证书字符串。
    2
    insecureSkipTLSVerify 配置可以设置为 "true""false "。如果设置为 "true",则禁用 SSL/TLS 安全性。如果设置为 "false",则启用 SSL/TLS 安全性。

15.1.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,安装将失败。

      注意

      Velero 在 OADP 命名空间中创建一个名为 velero-repo-credentials 的 secret,其中包含默认的备份存储库密码。在运行第一个面向备份存储库的备份之前,您可以使用自己的密码更新 secret,以 base64 编码。要更新的键值是 Data[repository-password]

      创建 DPA 后,第一次运行指向备份存储库的备份时,Velero 会创建一个备份存储库,其 secret 为 velero-repo-credentials,其中包含默认密码或您替换它。如果在首次备份之后更新 secret 密码,新密码将与 velero-repo-credentials 中的密码不匹配,因此 Velero 将无法与旧的备份连接。

步骤

  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
    OpenShift Virtualization 需要 kubevirt 插件。
    2
    为备份供应商指定插件,如 gcp (如果存在)。
    3
    csi 插件是使用 CSI 快照备份 PV 所必需的。csi 插件使用 Velero CSI beta 快照 API。您不需要配置快照位置。
    4
    openshift 插件是必需的。
    5
    指定在超时发生前等待多个 Velero 资源的分钟,如 Velero CRD 可用、volumeSnapshot 删除和备份存储库可用。默认值为 10m。
    6
    如果要禁用 Restic 安装,则将此值设置为 false。Restic 部署一个守护进程集,这意味着 Restic pod 在每个工作节点上运行。在 OADP 版本 1.2 及更高版本中,您可以通过在 Backup CR 中添加 spec.defaultVolumesToFsBackup: true 来配置 Restic 进行备份。在 OADP 版本 1.1 中,将 spec.defaultVolumesToRestic: true 添加到 Backup CR 中。
    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

15.1.4.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 默认插件。

15.1.5. 卸载 OADP

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