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 必须在目标集群中安装。

流程

  1. 安装 crane 工具:

    $ podman cp $(podman create registry.redhat.io/rhmtc/openshift-migration-controller-rhel8:v1.7):/crane ./
  2. 远程登录源集群中的节点以及目标集群的节点。
  3. 在登录后,获取两个集群的集群上下文:

    $ oc config view
  4. 在命令系统中输入以下命令来建立隧道:

    $ 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

  5. 在 OpenVPN 服务器上位于目标控制节点上,验证 openvpn 服务和 proxied-cluster 服务是否正在运行:

    $ oc get service -n <namespace>
  6. 在源节点上,获取迁移控制器的服务帐户(SA)令牌:

    # oc sa get-token -n openshift-migration migration-controller
  7. 打开 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 成功验证连接后,您可以继续创建并运行迁移计划。源集群的命名空间应该会显示在命名空间列表中。

其他资源