4.4. 配置代理

对于 OpenShift Container Platform 4.1 及更早的版本,您必须在安装 MTC Operator 的 Migration Toolkit for Containers Operator 后,在 MigrationController 自定义资源(CR)清单中配置代理,因为这些版本不支持集群范围的 代理 对象。

对于 OpenShift Container Platform 4.2 到 4.8,MTC 会继承集群范围的代理设置。如果要覆盖集群范围的代理设置,可以更改代理参数。

您必须将代理配置为允许 SPDY 协议,并将 Upgrade HTTP 标头转发到 API 服务器。否则,会显示 Upgrade request required 错误。MigrationController CR 使用 SPDY 在远程 pod 内运行命令。需要 Upgrade HTTP 标头来打开与 API 服务器的 websocket 连接。

直接卷迁移

如果要从代理后面的源集群执行直接卷迁移 (DVM),您必须配置 Stunnel 代理。stunnel 在源和目标集群之间为 TCP 连接创建透明的隧道,而不更改证书。

DVM 只支持一个代理。如果目标集群也位于代理后面,则源集群无法访问目标集群的路由。

先决条件

  • 必须使用在所有集群中具有 cluster-admin 权限的用户登录。

流程

  1. 获取 MigrationController CR 清单:

    $ oc get migrationcontroller <migration_controller> -n openshift-migration
  2. 更新代理参数:

    apiVersion: migration.openshift.io/v1alpha1
    kind: MigrationController
    metadata:
      name: <migration_controller>
      namespace: openshift-migration
    ...
    spec:
      stunnel_tcp_proxy: http://<username>:<password>@<ip>:<port> 1
      httpProxy: http://<username>:<password>@<ip>:<port> 2
      httpsProxy: http://<username>:<password>@<ip>:<port> 3
      noProxy: example.com 4
    1
    用于直接卷迁移的 stunnel 代理 URL。
    2
    用于创建集群外 HTTP 连接的代理 URL。URL 必须是 http
    3
    用于在集群外创建 HTTPS 连接的代理 URL。如果没有指定,则 httpProxy 会同时用于 HTTP 和 HTTPS 连接。
    4
    要排除代理的目标域名、域、IP 地址或其他网络 CIDR 的逗号分隔列表。

    在域前面加 . 来仅匹配子域。例如: .y.com 匹配 x.y.com,但不匹配 y.com。使用 * 可对所有目的地绕过所有代理。如果您扩展了未包含在安装配置中 networking.machineNetwork[].cidr 字段定义的 worker,您必须将它们添加到此列表中,以防止连接问题。

    如果未设置 httpProxy 和 httpsProxy 字段,则此字段将被忽略。

  3. 将清单保存为 migration-controller.yaml
  4. 应用更新的清单:

    $ oc replace -f migration-controller.yaml -n openshift-migration

如需更多信息,请参阅配置集群范围代理