2.4. 使用 CAM web 控制台迁移应用程序

您可以通过在 CAM web 控制台中添加集群和复制存储库来迁移应用程序工作负载。然后,您可以创建并运行迁移计划。

如果集群或复制存储库有自签名证书保护,您可以创建 CA 证书捆绑包文件或禁用 SSL 验证。

2.4.1. 创建 CA 证书捆绑包文件

如果您使用自签名证书来保护集群或复制存储库的安全,则证书验证可能会失败,出错信息如下:Certificate signed by unknown authority

您可以创建自定义 CA 证书捆绑包文件,并在添加集群或复制存储库时将其上传到 CAM web 控制台。

流程

从远程端点下载 CA 证书,并将其保存为 CA 捆绑包文件:

$ echo -n | openssl s_client -connect <host_FQDN>:<port> \ 1
  | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > <ca_bundle.cert> 2
1
指定端点的主机 FQDN 和端口,如 api.my-cluster.example.com:6443
2
指定 CA 捆绑包文件的名称。

2.4.2. 把集群添加到 CAM web 控制台中

您可以将源集群添加到 CAM web 控制台。

先决条件

如果要使用 Azure 快照复制数据:

  • 在添加源集群时,您必须提供 Azure 资源组名称。
  • 源和目标集群必须位于同一 Azure 资源组且位于同一位置。

流程

  1. 登录到集群。
  2. 获取服务帐户令牌:

    $ oc sa get-token mig -n openshift-migration
    eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaWciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoibWlnLXRva2VuLWs4dDJyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im1pZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImE1YjFiYWMwLWMxYmYtMTFlOS05Y2NiLTAyOWRmODYwYjMwOCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptaWc6bWlnIn0.xqeeAINK7UXpdRqAtOj70qhBJPeMwmgLomV9iFxr5RoqUgKchZRG2J2rkqmPm6vr7K-cm7ibD1IBpdQJCcVDuoHYsFgV4mp9vgOfn9osSDp2TGikwNz4Az95e81xnjVUmzh-NjDsEpw71DH92iHV_xt2sTwtzftS49LpPW2LjrV0evtNBP_t_RfskdArt5VSv25eORl7zScqfe1CiMkcVbf2UqACQjo3LbkpfN26HAioO2oH0ECPiRzT0Xyh-KwFutJLS9Xgghyw-LD9kPKcE_xbbJ9Y4Rqajh7WdPYuB0Jd9DPVrslmzK-F6cgHHYoZEv0SvLQi-PO0rpDrcjOEQQ
  3. 登录到 CAM web 控制台。
  4. Clusters 部分,点 Add cluster
  5. 填写以下字段:

    • Cluster name:可包括小写字母(a-z)和数字(0-9)。不能包含空格或国际字符。
    • URL:集群 API 服务器的 URL,如 https://<master1.example.com>:8443
    • Service account token:从源集群获取的字符串。
    • Azure cluster:可选。如果要使用 Azure 快照复制数据,请选择此项。
    • Azure resource group:如果选中了 Azure cluster,则会出现此字段。
    • 如果您使用自定义 CA 捆绑包,请点击 Browse 并浏览到所需的 CA 捆绑包文件。
  6. Add cluster

    集群会出现在 Clusters 部分。

2.4.3. 在 CAM web 控制台中添加复制程序库

您可以将对象存储桶作为复制存储库添加到 CAM web 控制台。

先决条件

  • 您必须配置用于迁移数据的对象存储桶。

流程

  1. 登录到 CAM web 控制台。
  2. Replication repositories 部分,点 Add repository
  3. 选择 Storage provider type 并填写以下字段:

    • AWS 适用于 S3、MCSG 和通用 S3 供应商:

      • Replication repository name:指定 CAM web 控制台中的复制存储库。
      • S3 bucket name:指定您创建的 S3 存储桶的名称。
      • S3 bucket region:指定 S3 存储桶区域。AWS S3 必填Optional 用于其他 S3 供应商。
      • S3 端点:指定 S3 服务的 URL,而不是存储桶,例如:https://<s3-storage.apps.cluster.com>。通用 S3 供应商必填。您必须使用 https:// 前缀。
      • S3 provider access key:为 AWS 指定 <AWS_SECRET_ACCESS_KEY> ,或者为 MCG 指定 S3 供应商访问密钥。
      • S3 provider secret access key:为 AWS 指定 <AWS_ACCESS_KEY_ID> ,或者为 MCG 指定 S3 供应商 secret 访问密钥。
      • Require SSL verification:如果您使用的是通用 S3 供应商,则清除此复选框。
      • 如果您使用自定义 CA 捆绑包,请点击 Browse 并浏览到所需的 Base64 编码的 CA 捆绑包文件。
    • GCP

      • Replication repository name:指定 CAM web 控制台中的复制存储库。
      • GCP bucket name:指定 GCP 存储桶的名称。
      • GCP credential JSON blob:在 credentials-velero 文件中指定字符串。
    • Azure

      • Replication repository name:指定 CAM web 控制台中的复制存储库。
      • Azure resource group:指定 Azure Blob 存储的资源组。
      • Azure storage account name:指定 Azure Blob 存储帐户名称
      • Azure credentials - INI file contents:在 credentials-velero 文件中指定字符串。
  4. Add repository 并等待连接验证。
  5. Close

    新存储库会出现在 Replication repositories 部分。

2.4.4. 为大型迁移修改迁移计划限制

您可以更改大型迁移的迁移计划限制。

重要

您需要首先在自己的环境对所做的更改进行测试,以避免迁移失败。

单个迁移计划有以下默认限制:

  • 10 个命名空间

    如果超过这个限制,CAM web 控制台会显示一个 Namespace limit exceeded 错误,您将无法创建迁移计划。

  • 100 个 Pod

    如果超过 Pod 限制,CAM web 控制台会显示类似以下示例的警告信息: Plan has been validated with warning condition(s).查看警告信息。pod limit: 100 exceeded, found: 104

  • 100 个持久性卷(PV)

    如果超过持久性卷限制,则 CAM web 控制台会显示类似的警告信息。

流程

  1. 编辑迁移控制器 CR:

    $ oc get migrationcontroller -n openshift-migration
    NAME AGE
    migration-controller 5d19h
    
    $ oc edit migrationcontroller -n openshift-migration
  2. 更新以下参数:

    ...
    migration_controller: true
    
    # This configuration is loaded into mig-controller, and should be set on the
    # cluster where `migration_controller: true`
    mig_pv_limit: 100
    mig_pod_limit: 100
    mig_namespace_limit: 10
    ...

2.4.5. 在 CAM web 控制台中创建迁移计划

您可以在 CAM web 控制台中创建迁移计划。

先决条件

  • CAM web 控制台必须包含以下内容:

    • 源集群
    • 目标集群,它会在 CAM 工具安装过程中自动添加
    • 复制软件仓库
  • 源和目标集群必须可以通过网络相互访问,并可以访问复制存储库。
  • 如果要使用快照复制数据,则源和目标集群必须在同一云供应商(AWS、GCP 或 Azure)以及同一区域中。

流程

  1. 登录到 CAM web 控制台。
  2. Plans 部分,点 Add Plan
  3. 输入 Plan name 并点 Next

    Plan name 最多可包含 253 个小写字母数字字符(a-z,0-9)。它不能包含空格或下划线(_)。

  4. 选一个 Source cluster
  5. 选一个 Target cluster
  6. 选一个 Replication repository
  7. 选择要迁移的项目并点 Next
  8. 选择 CopyMove PV:

    • Copy 将源集群的 PV 中的数据复制到复制存储库中,然后在目标集群中新创建的具有类似特征的 PV 上恢复它。

      可选: 您可以通过选择 Verify copy来使用文件系统的方法来验证复制的数据。这个选项为每个源文件生成 checksum 并在恢复后对其进行检查。这可能会大大降低性能。

    • Move 从源集群中卸载一个远程卷(例如 NFS),在目标集群上创建一个指向这个远程卷的 PV 资源,然后在目标集群中挂载远程卷。在目标集群中运行的应用程序使用源集群使用的同一远程卷。远程卷必须可以被源集群和目标集群访问。
  9. Next
  10. 为 PV 选择 Copy method

    • Snapshot 使用云供应商的快照功能备份和恢复磁盘。它比 Filesystem 快得多。

      注意

      存储和集群必须位于同一区域,存储类必须兼容。

    • Filesystem 将源磁盘中的数据文件复制到新创建的目标磁盘。
  11. 为 PV 选择一个 Storage class

    如果选择了 Filesystem 复制方法,您可以在迁移过程中更改存储类,例如:从 Red Hat Gluster Storage 或 NFS 存储改为 Red Hat Ceph Storage。

  12. Next
  13. 如果您要添加迁移 hook,请点击 Add Hook 并执行以下步骤:

    1. 指定存储桶的名称。
    2. 选择 Ansible playbook 来使用您自己的 playbook 或 Custom container image 来使用以其他语言编写的 hook。
    3. 点击 Browse 上传 playbook。
    4. 可选: 如果您未使用默认 Ansible 运行时镜像,请指定自定义 Ansible 镜像。
    5. 指定要运行 hook 的集群。
    6. 获取服务帐户名称。
    7. 指定命名空间。
    8. 选择您希望 hook 运行的迁移步骤:

      • PreBackup: 在源集群上启动备份前的任务
      • PostBackup: 在源集群中完成备份任务后
      • PreRestore: 在目标集群上启动恢复前的任务
      • PostRestore: 在目标集群中完成恢复后的任务
  14. Add

    您可以在迁移计划中添加最多四个 hook,将每个 hook 分配给不同的迁移步骤。

  15. Finish
  16. Close

    迁移计划会出现在 Plans 部分。

2.4.6. 在 CAM web 控制台中运行迁移计划

您可以使用在 CAM web 控制台中创建的迁移计划来 stage 或迁移应用程序和数据。

先决条件

CAM web 控制台必须包含以下内容:

  • 源集群
  • 目标集群,它会在 CAM 工具安装过程中自动添加
  • 复制软件仓库
  • 有效的迁移计划

流程

  1. 登录目标集群上的 CAM web 控制台。
  2. 选择迁移计划。
  3. Stage 以在不停止应用程序的情况下,将数据从源集群复制到目标集群。

    您可以多次运行 Stage 以减少实际迁移时间。

  4. 当准备好迁移应用程序工作负载时,点 Migrate

    Migrate 在源集群中停止应用程序工作负载,并在目标集群中重新创建其资源。

  5. 另外,还可以在 Migrate 窗口中选择 Do not stop applications on the source cluster during migration
  6. Migrate
  7. 可选: 要停止迁移过,请点击 Options 菜单 kebab 并选择 Cancel
  8. 迁移完成后,在 OpenShift Container Platform web 控制台中确认已成功迁移了应用程序:

    1. HomeProjects
    2. 点迁移的项目查看其状态。
    3. Routes 部分,点击 Location 验证应用程序是否正常运行。
    4. WorkloadsPods 来验证 Pod 在迁移的命名空间中运行。
    5. StoragePersistent volumes 确认正确置备了被迁移的持久性卷。