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
2.4.2. 把集群添加到 CAM web 控制台中
您可以将源集群添加到 CAM web 控制台。
先决条件
如果要使用 Azure 快照复制数据:
- 在添加源集群时,您必须提供 Azure 资源组名称。
- 源和目标集群必须位于同一 Azure 资源组且位于同一位置。
流程
- 登录到集群。
获取服务帐户令牌:
$ oc sa get-token mig -n openshift-migration eyJhbGciOiJSUzI1NiIsImtpZCI6IiJ9.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJtaWciLCJrdWJlcm5ldGVzLmlvL3NlcnZpY2VhY2NvdW50L3NlY3JldC5uYW1lIjoibWlnLXRva2VuLWs4dDJyIiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9zZXJ2aWNlLWFjY291bnQubmFtZSI6Im1pZyIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImE1YjFiYWMwLWMxYmYtMTFlOS05Y2NiLTAyOWRmODYwYjMwOCIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDptaWc6bWlnIn0.xqeeAINK7UXpdRqAtOj70qhBJPeMwmgLomV9iFxr5RoqUgKchZRG2J2rkqmPm6vr7K-cm7ibD1IBpdQJCcVDuoHYsFgV4mp9vgOfn9osSDp2TGikwNz4Az95e81xnjVUmzh-NjDsEpw71DH92iHV_xt2sTwtzftS49LpPW2LjrV0evtNBP_t_RfskdArt5VSv25eORl7zScqfe1CiMkcVbf2UqACQjo3LbkpfN26HAioO2oH0ECPiRzT0Xyh-KwFutJLS9Xgghyw-LD9kPKcE_xbbJ9Y4Rqajh7WdPYuB0Jd9DPVrslmzK-F6cgHHYoZEv0SvLQi-PO0rpDrcjOEQQ
- 登录到 CAM web 控制台。
- 在 Clusters 部分,点 Add cluster。
填写以下字段:
-
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 捆绑包文件。
-
Cluster name:可包括小写字母(
点 Add cluster。
集群会出现在 Clusters 部分。
2.4.3. 在 CAM web 控制台中添加复制程序库
您可以将对象存储桶作为复制存储库添加到 CAM web 控制台。
先决条件
- 您必须配置用于迁移数据的对象存储桶。
流程
- 登录到 CAM web 控制台。
- 在 Replication repositories 部分,点 Add repository。
选择 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
文件中指定字符串。
- 点 Add repository 并等待连接验证。
点 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 控制台会显示类似的警告信息。
流程
编辑迁移控制器 CR:
$ oc get migrationcontroller -n openshift-migration NAME AGE migration-controller 5d19h $ oc edit migrationcontroller -n openshift-migration
更新以下参数:
... 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)以及同一区域中。
流程
- 登录到 CAM web 控制台。
- 在 Plans 部分,点 Add Plan。
输入 Plan name 并点 Next。
Plan name 最多可包含 253 个小写字母数字字符(
a-z,0-9
)。它不能包含空格或下划线(_
)。- 选一个 Source cluster。
- 选一个 Target cluster。
- 选一个 Replication repository。
- 选择要迁移的项目并点 Next。
选择 Copy 或 Move PV:
Copy 将源集群的 PV 中的数据复制到复制存储库中,然后在目标集群中新创建的具有类似特征的 PV 上恢复它。
可选: 您可以通过选择 Verify copy来使用文件系统的方法来验证复制的数据。这个选项为每个源文件生成 checksum 并在恢复后对其进行检查。这可能会大大降低性能。
- Move 从源集群中卸载一个远程卷(例如 NFS),在目标集群上创建一个指向这个远程卷的 PV 资源,然后在目标集群中挂载远程卷。在目标集群中运行的应用程序使用源集群使用的同一远程卷。远程卷必须可以被源集群和目标集群访问。
- 点 Next。
为 PV 选择 Copy method:
Snapshot 使用云供应商的快照功能备份和恢复磁盘。它比 Filesystem 快得多。
注意存储和集群必须位于同一区域,存储类必须兼容。
- Filesystem 将源磁盘中的数据文件复制到新创建的目标磁盘。
为 PV 选择一个 Storage class。
如果选择了 Filesystem 复制方法,您可以在迁移过程中更改存储类,例如:从 Red Hat Gluster Storage 或 NFS 存储改为 Red Hat Ceph Storage。
- 点 Next。
如果您要添加迁移 hook,请点击 Add Hook 并执行以下步骤:
- 指定存储桶的名称。
- 选择 Ansible playbook 来使用您自己的 playbook 或 Custom container image 来使用以其他语言编写的 hook。
- 点击 Browse 上传 playbook。
- 可选: 如果您未使用默认 Ansible 运行时镜像,请指定自定义 Ansible 镜像。
- 指定要运行 hook 的集群。
- 获取服务帐户名称。
- 指定命名空间。
选择您希望 hook 运行的迁移步骤:
- PreBackup: 在源集群上启动备份前的任务
- PostBackup: 在源集群中完成备份任务后
- PreRestore: 在目标集群上启动恢复前的任务
- PostRestore: 在目标集群中完成恢复后的任务
点 Add。
您可以在迁移计划中添加最多四个 hook,将每个 hook 分配给不同的迁移步骤。
- 点 Finish。
点 Close。
迁移计划会出现在 Plans 部分。
2.4.6. 在 CAM web 控制台中运行迁移计划
您可以使用在 CAM web 控制台中创建的迁移计划来 stage 或迁移应用程序和数据。
先决条件
CAM web 控制台必须包含以下内容:
- 源集群
- 目标集群,它会在 CAM 工具安装过程中自动添加
- 复制软件仓库
- 有效的迁移计划
流程
- 登录目标集群上的 CAM web 控制台。
- 选择迁移计划。
点 Stage 以在不停止应用程序的情况下,将数据从源集群复制到目标集群。
您可以多次运行 Stage 以减少实际迁移时间。
当准备好迁移应用程序工作负载时,点 Migrate。
Migrate 在源集群中停止应用程序工作负载,并在目标集群中重新创建其资源。
- 另外,还可以在 Migrate 窗口中选择 Do not stop applications on the source cluster during migration。
- 点 Migrate。
- 可选: 要停止迁移过,请点击 Options 菜单 并选择 Cancel。
迁移完成后,在 OpenShift Container Platform web 控制台中确认已成功迁移了应用程序:
-
点 Home
Projects。 - 点迁移的项目查看其状态。
- 在 Routes 部分,点击 Location 验证应用程序是否正常运行。
-
点 Workloads
Pods 来验证 Pod 在迁移的命名空间中运行。 -
点 Storage
Persistent volumes 确认正确置备了被迁移的持久性卷。
-
点 Home