×

使用 OADP 和 ROSA STS 执行备份

以下示例hello-world应用程序未附加任何持久卷 (PV)。使用 AWS 上的 Red Hat OpenShift Service (ROSA) STS 和 OpenShift 数据保护 API (OADP) 执行备份。

任一数据保护应用程序 (DPA) 配置均可。

  1. 运行以下命令创建要备份的工作负载

    $ oc create namespace hello-world
    $ oc new-app -n hello-world --image=docker.io/openshift/hello-openshift
  2. 运行以下命令公开路由

    $ oc expose service/hello-openshift -n hello-world
  3. 运行以下命令检查应用程序是否正常运行

    $ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
    示例输出
    Hello OpenShift!
  4. 运行以下命令备份工作负载

    $ cat << EOF | oc create -f -
      apiVersion: velero.io/v1
      kind: Backup
      metadata:
        name: hello-world
        namespace: openshift-adp
      spec:
        includedNamespaces:
        - hello-world
        storageLocation: ${CLUSTER_NAME}-dpa-1
        ttl: 720h0m0s
    EOF
  5. 等待备份完成,然后运行以下命令

    $ watch "oc -n openshift-adp get backup hello-world -o json | jq .status"
    示例输出
    {
      "completionTimestamp": "2022-09-07T22:20:44Z",
      "expiration": "2022-10-07T22:20:22Z",
      "formatVersion": "1.1.0",
      "phase": "Completed",
      "progress": {
        "itemsBackedUp": 58,
        "totalItems": 58
      },
      "startTimestamp": "2022-09-07T22:20:22Z",
      "version": 1
    }
  6. 运行以下命令删除演示工作负载

    $ oc delete ns hello-world
  7. 运行以下命令从备份中恢复工作负载

    $ cat << EOF | oc create -f -
      apiVersion: velero.io/v1
      kind: Restore
      metadata:
        name: hello-world
        namespace: openshift-adp
      spec:
        backupName: hello-world
    EOF
  8. 运行以下命令等待恢复完成

    $ watch "oc -n openshift-adp get restore hello-world -o json | jq .status"
    示例输出
    {
      "completionTimestamp": "2022-09-07T22:25:47Z",
      "phase": "Completed",
      "progress": {
        "itemsRestored": 38,
        "totalItems": 38
      },
      "startTimestamp": "2022-09-07T22:25:28Z",
      "warnings": 9
    }
  9. 运行以下命令检查工作负载是否已恢复

    $ oc -n hello-world get pods
    示例输出
    NAME                              READY   STATUS    RESTARTS   AGE
    hello-openshift-9f885f7c6-kdjpj   1/1     Running   0          90s
  10. 运行以下命令检查 JSONPath

    $ curl `oc get route/hello-openshift -n hello-world -o jsonpath='{.spec.host}'`
    示例输出
    Hello OpenShift!

有关故障排除提示,请参阅 OADP 团队的故障排除文档

使用 OADP 和 ROSA STS 备份后清理集群

如果您需要卸载 OpenShift 数据保护 API (OADP) 运算符以及备份和此示例中的 S3 存储桶,请按照以下说明操作。

步骤
  1. 运行以下命令删除工作负载

    $ oc delete ns hello-world
  2. 运行以下命令删除数据保护应用程序 (DPA)

    $ oc -n openshift-adp delete dpa ${CLUSTER_NAME}-dpa
  3. 运行以下命令删除云存储

    $ oc -n openshift-adp delete cloudstorage ${CLUSTER_NAME}-oadp

    如果此命令挂起,您可能需要运行以下命令删除最终确定器

    $ oc -n openshift-adp patch cloudstorage ${CLUSTER_NAME}-oadp -p '{"metadata":{"finalizers":null}}' --type=merge
  4. 如果不再需要运算符,请运行以下命令将其删除

    $ oc -n openshift-adp delete subscription oadp-operator
  5. 从运算符中删除命名空间

    $ oc delete ns openshift-adp
  6. 如果不再需要备份和恢复资源,请运行以下命令将其从集群中删除

    $ oc delete backups.velero.io hello-world
  7. 要删除 AWS S3 中的备份、恢复和远程对象,请运行以下命令

    $ velero backup delete hello-world
  8. 如果您不再需要自定义资源定义 (CRD),请运行以下命令将其从集群中删除

    $ for CRD in `oc get crds | grep velero | awk '{print $1}'`; do oc delete crd $CRD; done
  9. 运行以下命令删除 AWS S3 存储桶

    $ aws s3 rm s3://${CLUSTER_NAME}-oadp --recursive
    $ aws s3api delete-bucket --bucket ${CLUSTER_NAME}-oadp
  10. 运行以下命令将策略与角色分离

    $ aws iam detach-role-policy --role-name "${ROLE_NAME}"  --policy-arn "${POLICY_ARN}"
  11. 运行以下命令删除角色

    $ aws iam delete-role --role-name "${ROLE_NAME}"