8.2. 使用 MTC web 控制台迁移应用程序

您可以使用 MTC web 控制台配置集群和复制存储库。然后,您可以创建并运行迁移计划。

8.2.1. 启动 MTC web 控制台

您可以在浏览器中启动 MTC web 控制台。

先决条件

  • MTC web 控制台必须具有到 OpenShift Container Platform Web 控制台的网络访问权限。
  • MTC web 控制台必须具有到 OAuth 授权服务器的网络访问权限。

流程

  1. 登录到已安装 MTC 的 OpenShift Container Platform 集群。
  2. 输入以下命令来获取 MTC web 控制台 URL:

    $ oc get -n openshift-migration route/migration -o go-template='https://{{ .spec.host }}'

    输出类似于以下: https://migration-openshift-migration.apps.cluster.openshift.com

  3. 启动浏览器并进入 MTC web 控制台。

    注意

    如果在安装 MTC 工具套件 Operator 后尝试立即访问 MTC web 控制台,则该控制台可能无法加载,因为 Operator 仍然在配置集群。等待几分钟后重试。

  4. 如果您使用自签名的 CA 证书,则会提示您接受源集群 API 服务器的 CA 证书。网页会引导您接受剩余证书的过程。
  5. 使用 OpenShift Container Platform 的用户名密码进行登陆。

8.2.2. 在 MTC web 控制台中添加集群

您可以在 MTC web 控制台中添加一个集群到 Migration Toolkit for Containers(MTC)web 控制台。

先决条件

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

    • 您必须为集群指定 Azure 资源组名称。
    • 集群必须位于同一 Azure 资源组中。
    • 集群必须位于同一地理位置。
  • 如果使用直接镜像迁移,则必须公开路由到

流程

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

    $ oc sa get-token migration-controller -n openshift-migration

    输出示例

    eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaWciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoibWlnLXRva2VuLWs4dDJyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im1pZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImE1YjFiYWMwLWMxYmYtMTFlOS05Y2NiLTAyOWRmODYwYjMwOCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptaWc6bWlnIn0.xqeeAINK7UXpdRqAtOj70qhBJPeMwmgLomV9iFxr5RoqUgKchZRG2J2rkqmPm6vr7K-cm7ibD1IBpdQJCcVDuoHYsFgV4mp9vgOfn9osSDp2TGikwNz4Az95e81xnjVUmzh-NjDsEpw71DH92iHV_xt2sTwtzftS49LpPW2LjrV0evtNBP_t_RfskdArt5VSv25eORl7zScqfe1CiMkcVbf2UqACQjo3LbkpfN26HAioO2oH0ECPiRzT0Xyh-KwFutJLS9Xgghyw-LD9kPKcE_xbbJ9Y4Rqajh7WdPYuB0Jd9DPVrslmzK-F6cgHHYoZEv0SvLQi-PO0rpDrcjOEQQ

  3. 在 MTC web 控制台中点 Clusters
  4. Add cluster
  5. 填写以下字段:

    • Cluster name:集群名称可包含小写字母(a-z)和数字(0-9)。它不能包含空格或国际字符。
    • URL:指定 API 服务器 URL,例如 https://<www.example.com>:8443
    • Service account token:粘贴 migration-controller 服务帐户令牌。
    • 公开的路由主机到镜像 registry:如果您使用直接镜像迁移,请指定源集群镜像 registry 公开的路由。

      要创建路由,请运行以下命令:

      • 对于 OpenShift Container Platform 3:

        $ oc create route passthrough --service=docker-registry --port=5000 -n default
      • 对于 OpenShift Container Platform 4:

        $ oc create route passthrough --service=image-registry --port=5000 -n openshift-image-registry
    • Azure cluster:如果使用 Azure 快照复制数据,您必须选择此选项。
    • Azure resource group:如果选择了 Azure cluster,则会显示此字段。指定 Azure 资源组。
    • 需要 SSL 验证:可选:选择这个选项验证到集群的 SSL 连接。
    • CA bundle file:如果选择了 Require SSL 验证,则会显示此字段。如果您为自签名证书创建了自定义 CA 证书捆绑包文件,请点 Browse,选择 CA 捆绑包文件并上传它。
  6. Add cluster

    集群会出现在 Clusters 列表中。

8.2.3. 在 MTC web 控制台中添加复制存储库

您可以将对象存储作为复制存储库添加到 MTC web 控制台的 Migration Toolkit for Containers (MTC) web 控制台中。

MTC 支持以下存储供应商:

  • Amazon Web Services (AWS) S3
  • 多云对象网关 (MCG)
  • 通用 S3 对象存储,例如 Minio 或 Ceph S3
  • Google Cloud Provider (GCP)
  • Microsoft Azure Blob

先决条件

  • 您必须将对象存储配置为复制存储库。

流程

  1. 在 MTC web 控制台中点 Replication repositories
  2. Add repository
  3. 选择 Storage provider type 并填写以下字段:

    • 用于 S3 供应商的 AWS,包括 AWS 和 MCG:

      • Replication repository name:指定 MTC web 控制台中的复制存储库。
      • S3 bucket name:指定 S3 存储桶的名称。
      • S3 bucket region:指定 S3 存储桶区域。AWS S3 必填。对于某些 S3 供应商是可选的。检查 S3 供应商的产品文档,以获取预期值。
      • S3 端点:指定 S3 服务的 URL,而不是存储桶,例如:https://<s3-storage.apps.cluster.com>。通用 S3 供应商必填。您必须使用 https:// 前缀。
      • S3 provider access key :为 AWS 指定 <AWS_SECRET_ACCESS_KEY>,或者为 MCG 和其他 S3 供应商指定 S3 供应商访问密钥。
      • S3 provider secret access key :为 AWS 指定 <AWS_ACCESS_KEY_ID>,或为 MCG 和其他 S3 供应商指定 S3 provider secret 访问密钥。
      • Require SSL verification:如果您使用的是通用 S3 供应商,则清除此复选框。
      • 如果您为自签名证书创建了自定义 CA 证书捆绑包,点 Browse 并浏览到 Base64 编码的文件。
    • GCP

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

      • Replication repository name:指定 MTC 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 列表中。

8.2.4. 在 MTC web 控制台中创建迁移计划

您可以在 Migration Toolkit for Containers(MTC)web 控制台中创建一个迁移计划。

先决条件

  • 必须使用在所有集群中具有 cluster-admin 权限的用户登录。
  • 您必须确保在所有集群中安装相同的 MTC 版本。
  • 您必须在 MTC web 控制台中添加集群和复制存储库。
  • 如果要使用 move 数据复制方法迁移持久性卷(PV),则源和目标集群必须有对远程卷的不间断网络访问权限。
  • 如果要使用直接镜像迁移,您必须指定源集群的镜像 registry 公开的路由。这可以通过使用 MTC web 控制台或更新 MigCluster 自定义资源清单来实现。

流程

  1. 在 MTC web 控制台中点 Migration Plan
  2. Add migration plan
  3. 输入 Plan 名称

    迁移计划名称不能超过 253 个小写字母数字字符(a-z, 0-9),且不能包含空格或下划线(_)。

  4. 选择 Source clusterTarget clusterRepository
  5. Next
  6. 选择要迁移的项目。
  7. 可选:点击项目旁边的编辑图标来更改目标命名空间。
  8. Next
  9. 为每个 PV 选择一个 迁移类型

    • Copy 选项将源集群的 PV 中的数据复制到复制存储库中,然后在目标集群中恢复新创建的具有类似特征的 PV 上的数据。
    • Move 选项从源集群中卸载一个远程卷(例如 NFS),在目标集群上创建一个指向这个远程卷的 PV 资源,然后在目标集群中挂载远程卷。在目标集群中运行的应用程序使用源集群使用的同一远程卷。
  10. Next
  11. 为每个 PV 选择 Copy method

    • 快照复制使用云供应商的快照功能备份和恢复数据。它比 Filesystem copy 要快得多。
    • Filesystem copy 备份源集群中的文件,并在目标集群中恢复它们。

      直接卷迁移需要使用文件系统复制方法。

  12. 您可以选择 Verify copy 来验证使用 Filesystem copy 迁移的数据。数据是通过为每个源文件生成 checksum 并在恢复后检查 checksum 来验证。数据校验可能会显著降低性能。
  13. 选择 目标存储类

    如果选择了 Filesystem copy,您可以更改目标存储类。

  14. Next
  15. Migration options 页面上,如果您为源集群指定了公开的镜像 registry 路由,则会选择 Direct 镜像迁移 选项。如果使用 Filesystem copy 迁移数据,Direct PV migration 选项会被选择。

    直接迁移选项将镜像和文件直接从源集群复制到目标集群。这个选项比将源集群的镜像和文件复制到复制存储库,然后再从复制存储库复制到目标集群要快。

  16. Next
  17. 可选:点 Add Hook 在迁移计划中添加 hook。

    hook 运行自定义代码。您可以在单个迁移计划中最多添加四个 hook。每个 hook 在不同的迁移步骤中运行。

    1. 在 web 控制台中输入要显示的 hook 名称。
    2. 如果 hook 是一个 Ansible playbook,请选择 Ansible playbook,然后点 Browse 上传 playbook,或在字段中粘贴 playbook 的内容。
    3. 可选: 如果不使用默认 hook 镜像,请指定 Ansible 运行时镜像。
    4. 如果 hook 不是 Ansible playbook,选择 Custom container image 并指定镜像名称和路径。

      自定义容器镜像可以包含 Ansible playbook。

    5. 选择 Source clusterTarget cluster
    6. 输入 Service account nameService account namespace
    7. 为 hook 选择迁移步骤:

      • preBackup:在应用程序工作负载在源集群中备份前
      • PostBackup:在应用程序工作负载在源集群中备份后
      • preRestore:在目标集群中恢复应用程序工作负载前
      • postRestore:在目标集群中恢复应用程序工作负载后
    8. Add
  18. Finish

    迁移计划显示在 Migration Plan 列表中。

持久性卷复制方法的其他资源

8.2.5. 在 MTC web 控制台中运行迁移计划

您可以使用在 Migration Toolkit for Containers(MTC)web 控制台中创建的迁移计划来迁移应用程序和数据。

注意

迁移过程中,在目标集群中,MTC 将迁移的持久性卷(PV)的重新声明策略设置为 Retain

Backup 自定义资源包含一个 PVOriginalReclaimPolicy 注解,用于指示原始重新声明策略。您可以手动恢复迁移 PV 的重新声明策略。

先决条件

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

  • 处于 Ready 状态的源集群
  • 处于 Ready 状态的目标集群
  • 复制软件仓库
  • 有效的迁移计划

流程

  1. 登录到 MTC web 控制台并点 迁移计划
  2. 点击迁移计划 kebab 旁边的 Options 菜单,并在 Migration 中选择以下选项之一:

    • stage 在不停止应用程序的情况下将数据从源集群复制到目标集群。
    • cutover 会停止源集群上的事务,并将资源移到目标集群。

      可选:在 Cutover 迁移 对话框中,您可以清除 Halt transactions on the source cluster during migration 多选设置。

    • State 会复制所选持久性卷声明(PVC)。

      重要

      不要使用状态迁移来在集群之间迁移命名空间。使用 stage 或 cutover migration。

      • 状态迁移对话框中选择一个或多个 PVC 并点 Migrate
  3. 迁移完成后,在 OpenShift Container Platform web 控制台中确认已成功迁移了应用程序:

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