11.2. 将应用程序从内部迁移到基于云的集群
您可以通过在两个集群之间建立网络隧道,从位于防火墙后的源集群迁移到基于云的目标集群。crane tunnel-api
命令通过在源集群中创建 VPN 隧道并连接到目标集群中运行的 VPN 服务器来建立这样的隧道。VPN 服务器使用目标集群上的负载均衡器地址向客户端公开。
在目标集群中创建的服务将源集群的 API 公开给 MTC,后者在目标集群上运行。
先决条件
- 创建 VPN 隧道的系统必须有权访问并登录到两个集群。
- 必须能够在目标集群中创建负载均衡器。请参考您的云供应商以确保可以这样做。
- 在源集群和目标集群上为命名空间分配名称,在其中运行 VPN 隧道。这些命名空间不应提前创建。有关命名空间规则的详情,请参考 https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#dns-subdomain-names。
- 将多个受防火墙保护的源集群连接到云集群时,每个源集群都需要自己的命名空间。
- OpenVPN 服务器安装在目标集群中。
- OpenVPN 客户端安装在源集群上。
当在 MTC 中配置源集群时,API URL 的格式是
https://proxied-cluster.<namespace>.svc.cluster.local:8443
。- 如果使用 API,请参阅为每个远程集群创建一个 MigCluster CR 清单。
- 如果使用 MTC web 控制台,请参阅使用 MTC web 控制台迁移应用程序。
- MTC web 控制台和 Migration Controller 必须在目标集群中安装。
流程
安装
crane
工具:$ podman cp $(podman create registry.redhat.io/rhmtc/openshift-migration-controller-rhel8:v1.7):/crane ./
- 远程登录源集群中的节点以及目标集群的节点。
在登录后,获取两个集群的集群上下文:
$ oc config view
在命令系统中输入以下命令来建立隧道:
$ crane tunnel-api [--namespace <namespace>] \ --destination-context <destination-cluster> \ --source-context <source-cluster>
如果没有指定命名空间,该命令会使用默认值
openvpn
。例如:
$ crane tunnel-api --namespace my_tunnel \ --destination-context openshift-migration/c131-e-us-east-containers-cloud-ibm-com/admin \ --source-context default/192-168-122-171-nip-io:8443/admin
提示输入
crane tunnel-api --help
,查看crane tunnel-api
命令的所有可用参数。命令生成 TSL/SSL 证书。这可能需要几分钟。当进程完成时会出现一条消息。
OpenVPN 服务器在目标集群上启动,并且 OpenVPN 客户端在源集群上启动。
几分钟后,负载均衡器会在源节点上解析。
提示您可以通过输入以下命令来查看 OpenVPN pod 的日志来检查此过程的状态:
# oc get po -n <namespace>
输出示例
NAME READY STATUS RESTARTS AGE <pod_name> 2/2 Running 0 44s
# oc logs -f -n <namespace> <pod_name> -c openvpn
当负载均衡器的地址得到解决时,日志末尾会显示消息
初始化序列 Completed
。在 OpenVPN 服务器上位于目标控制节点上,验证
openvpn
服务和proxied-cluster
服务是否正在运行:$ oc get service -n <namespace>
在源节点上,获取迁移控制器的服务帐户(SA)令牌:
# oc sa get-token -n openshift-migration migration-controller
打开 MTC web 控制台并使用以下值添加源集群:
- Cluster name :源集群名称。
-
URL:
proxied-cluster.<namespace>.svc.cluster.local:8443
。如果没有为<namespace>
定义值,请使用openvpn
。 - 服务账户令牌 :迁移控制器服务帐户的令牌。
-
公开的到镜像 registry 的路由主机:
proxied-cluster.<namespace>.svc.cluster.local:5000
。如果没有为<namespace>
定义值,请使用openvpn
。
MTC 成功验证连接后,您可以继续创建并运行迁移计划。源集群的命名空间应该会显示在命名空间列表中。
其他资源
- 有关为每个远程集群创建一个 MigCluster CR 清单的信息,请参阅使用 MTC API 迁移应用程序。
- 有关使用 web 控制台添加集群的详情,请参考使用 MTC web 控制台迁移应用程序