10.2. 使用 MTC web 控制台迁移应用程序
您可以使用 MTC web 控制台配置集群和复制存储库。然后,您可以创建并运行迁移计划。
10.2.1. 启动 MTC web 控制台
您可以在浏览器中启动 MTC web 控制台。
先决条件
- MTC web 控制台必须具有到 OpenShift Container Platform Web 控制台的网络访问权限。
- MTC web 控制台必须具有到 OAuth 授权服务器的网络访问权限。
流程
- 登录到已安装 MTC 的 OpenShift Container Platform 集群。
输入以下命令来获取 MTC web 控制台 URL:
$ oc get -n openshift-migration route/migration -o go-template='https://{{ .spec.host }}'
输出类似于以下:
https://migration-openshift-migration.apps.cluster.openshift.com
。启动浏览器并进入 MTC web 控制台。
注意如果在安装 MTC 工具套件 Operator 后尝试立即访问 MTC web 控制台,则该控制台可能无法加载,因为 Operator 仍然在配置集群。等待几分钟后重试。
- 如果您使用自签名的 CA 证书,则会提示您接受源集群 API 服务器的 CA 证书。网页会引导您接受剩余证书的过程。
- 使用 OpenShift Container Platform 的用户名和密码进行登陆。
10.2.2. 在 MTC web 控制台中添加集群
您可以在 MTC web 控制台中添加一个集群到 Migration Toolkit for Containers(MTC)web 控制台。
先决条件
- 必须在源集群中配置跨原始资源共享。
如果要使用 Azure 快照复制数据:
- 您必须为集群指定 Azure 资源组名称。
- 集群必须位于同一 Azure 资源组中。
- 集群必须位于同一地理位置。
- 如果使用直接镜像迁移,则必须公开到源集群的镜像 registry 的路由。
流程
- 登录到集群。
获取
migration-controller
服务帐户令牌:$ oc create token migration-controller -n openshift-migration
输出示例
eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaWciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoibWlnLXRva2VuLWs4dDJyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im1pZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImE1YjFiYWMwLWMxYmYtMTFlOS05Y2NiLTAyOWRmODYwYjMwOCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptaWc6bWlnIn0.xqeeAINK7UXpdRqAtOj70qhBJPeMwmgLomV9iFxr5RoqUgKchZRG2J2rkqmPm6vr7K-cm7ibD1IBpdQJCcVDuoHYsFgV4mp9vgOfn9osSDp2TGikwNz4Az95e81xnjVUmzh-NjDsEpw71DH92iHV_xt2sTwtzftS49LpPW2LjrV0evtNBP_t_RfskdArt5VSv25eORl7zScqfe1CiMkcVbf2UqACQjo3LbkpfN26HAioO2oH0ECPiRzT0Xyh-KwFutJLS9Xgghyw-LD9kPKcE_xbbJ9Y4Rqajh7WdPYuB0Jd9DPVrslmzK-F6cgHHYoZEv0SvLQi-PO0rpDrcjOEQQ
- 登录到 MTC web 控制台。
- 在 MTC web 控制台中点 Clusters。
- 点 Add cluster。
填写以下字段:
-
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 资源组。
当在 Microsoft Azure 上创建 {OCP} 集群时,会创建一个 Azure 资源组来包含与集群关联的所有资源。在 Azure CLI 中,您可以通过发出以下命令显示所有资源组:
$ az group list
与 OpenShift Container Platform 集群关联的
ResourceGroups
被标记,其中sample-rg-name
是您要提取并提供给 UI 的值:{ "id": "/subscriptions/...//resourceGroups/sample-rg-name", "location": "centralus", "name": "...", "properties": { "provisioningState": "Succeeded" }, "tags": { "kubernetes.io_cluster.sample-ld57c": "owned", "openshift_creationDate": "2019-10-25T23:28:57.988208+00:00" }, "type": "Microsoft.Resources/resourceGroups" },
此信息也可从 资源组 刀片的 Azure 门户 获取。
- 需要 SSL 验证 :可选:选择这个选项来验证到集群的安全套接字层(SSL)连接。
- CA bundle file:如果选择了 Require SSL 验证,则会显示此字段。如果您为自签名证书创建了自定义 CA 证书捆绑包文件,请点 Browse,选择 CA 捆绑包文件并上传它。
-
Cluster name:集群名称可包含小写字母(
点 Add cluster。
集群会出现在 Clusters 列表中。
10.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
先决条件
- 您必须将对象存储配置为复制存储库。
流程
- 在 MTC web 控制台中点 Replication repositories。
- 点 Add repository。
选择 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
文件中指定字符串。
- 点 Add repository 并等待连接验证。
点 Close。
新仓库会出现在 Replication repositories 列表中。
10.2.4. 在 MTC web 控制台中创建迁移计划
您可以在 Migration Toolkit for Containers(MTC)web 控制台中创建一个迁移计划。
先决条件
-
必须使用在所有集群中具有
cluster-admin
权限的用户登录。 - 您必须确保在所有集群中安装相同的 MTC 版本。
- 您必须在 MTC web 控制台中添加集群和复制存储库。
- 如果要使用 move 数据复制方法迁移持久性卷(PV),则源和目标集群必须有对远程卷的不间断网络访问权限。
-
如果要使用直接镜像迁移,您必须指定源集群的镜像 registry 公开的路由。这可以通过使用 MTC web 控制台或更新
MigCluster
自定义资源清单来实现。
流程
- 在 MTC web 控制台中点 Migration Plan。
- 点 Add migration plan。
输入 Plan 名称。
迁移计划名称不能超过 253 个小写字母数字字符(
a-z, 0-9
),且不能包含空格或下划线(_
)。- 选择 Source cluster、Target cluster 和 Repository。
- 点击 Next。
- 选择要迁移的项目。
- 可选:点击项目旁边的编辑图标来更改目标命名空间。
- 点击 Next。
为每个 PV 选择一个 迁移类型:
- Copy 选项将源集群的 PV 中的数据复制到复制存储库中,然后在目标集群中恢复新创建的具有类似特征的 PV 上的数据。
- Move 选项从源集群中卸载一个远程卷(例如 NFS),在目标集群上创建一个指向这个远程卷的 PV 资源,然后在目标集群中挂载远程卷。在目标集群中运行的应用程序使用源集群使用的同一远程卷。
- 点击 Next。
为每个 PV 选择 Copy method:
- 快照复制使用云供应商的快照功能备份和恢复数据。它比 Filesystem copy 要快得多。
Filesystem copy 备份源集群中的文件,并在目标集群中恢复它们。
直接卷迁移需要使用文件系统复制方法。
- 您可以选择 Verify copy 来验证使用 Filesystem copy 迁移的数据。数据是通过为每个源文件生成 checksum 并在恢复后检查 checksum 来验证。数据校验可能会显著降低性能。
选择 目标存储类。
如果选择了 Filesystem copy,您可以更改目标存储类。
- 点击 Next。
在 Migration options 页面上,如果您为源集群指定了公开的镜像 registry 路由,则会选择 Direct 镜像迁移 选项。如果使用 Filesystem copy 迁移数据,Direct PV migration 选项会被选择。
直接迁移选项将镜像和文件直接从源集群复制到目标集群。这个选项比将源集群的镜像和文件复制到复制存储库,然后再从复制存储库复制到目标集群要快。
- 点击 Next。
可选:点 Add Hook 在迁移计划中添加 hook。
hook 运行自定义代码。您可以在单个迁移计划中最多添加四个 hook。每个 hook 在不同的迁移步骤中运行。
- 在 web 控制台中输入要显示的 hook 名称。
- 如果 hook 是一个 Ansible playbook,请选择 Ansible playbook,然后点 Browse 上传 playbook,或在字段中粘贴 playbook 的内容。
- 可选: 如果不使用默认 hook 镜像,请指定 Ansible 运行时镜像。
如果 hook 不是 Ansible playbook,选择 Custom container image 并指定镜像名称和路径。
自定义容器镜像可以包含 Ansible playbook。
- 选择 Source cluster 或 Target cluster。
- 输入 Service account name 和 Service account namespace。
为 hook 选择迁移步骤:
- preBackup:在应用程序工作负载在源集群中备份前
- PostBackup:在应用程序工作负载在源集群中备份后
- preRestore:在目标集群中恢复应用程序工作负载前
- postRestore:在目标集群中恢复应用程序工作负载后
- 点击 Add。
点 Finish。
迁移计划显示在 Migration Plan 列表中。
其他资源
10.2.5. 在 MTC web 控制台中运行迁移计划
您可以使用在 Migration Toolkit for Containers(MTC)web 控制台中创建的迁移计划来迁移应用程序和数据。
迁移过程中,在目标集群中,MTC 将迁移的持久性卷(PV)的重新声明策略设置为 Retain
。
Backup
自定义资源包含一个 PVOriginalReclaimPolicy
注解,用于指示原始重新声明策略。您可以手动恢复迁移 PV 的重新声明策略。
先决条件
MTC web 控制台必须包含以下内容:
-
处于
Ready
状态的源集群 -
处于
Ready
状态的目标集群 - 复制软件仓库
- 有效的迁移计划
流程
- 登录到 MTC web 控制台并点 迁移计划。
点击迁移计划 旁边的 Options 菜单,并在 Migration 中选择以下选项之一:
- stage 在不停止应用程序的情况下将数据从源集群复制到目标集群。
cutover 会停止源集群上的事务,并将资源移到目标集群。
可选:在 Cutover 迁移 对话框中,您可以清除 Halt transactions on the source cluster during migration 多选设置。
State 会复制所选持久性卷声明(PVC)。
重要不要使用状态迁移来在集群之间迁移命名空间。使用 stage 或 cutover migration。
- 在状态迁移对话框中选择一个或多个 PVC 并点 Migrate。
迁移完成后,在 OpenShift Container Platform web 控制台中确认已成功迁移了应用程序:
-
点 Home
Projects。 - 点迁移的项目查看其状态。
- 在 Routes 部分,点击 Location 验证应用程序是否正常运行。
-
点 Workloads
Pods 来验证 pod 是否在迁移的命名空间中运行。 -
点 Storage
Persistent volumes 来验证是否正确置备了已迁移的持久性卷。
-
点 Home