1.4. 安装并升级 MTC

您可以在 OpenShift Container Platform 4.5 目标集群和 OpenShift Container Platform 3 源集群中安装 MTC。

Migration Controller pod 默认在目标集群上运行。您可以将 Migration Controller pod 配置为在源集群或远程集群中运行。

1.4.1. 在连接的环境中安装 MTC

您可以在连接的环境中安装 MTC。

重要

您必须在所有集群中安装相同的 MTC 版本。

1.4.1.1. 在 OpenShift Container Platform 4.5 目标集群上安装 MTC

您可以在 OpenShift Container Platform 4.5 目标集群上安装 MTC。

先决条件

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

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
  2. 使用 Filter by keyword 字段查找 MTCs Operator
  3. 选择 Migration Toolkit for Containers Operator 并点 Install

    注意

    不要将订阅批准选项改为 Automatic。在源和目标集群中,Migration Toolkit for Containers 版本必须相同。

  4. 点击 Install

    Installed Operators 页中,openshift-migration 项目中会出现状态为 SucceededMigration Toolkit for Containers Operator

  5. Migration Toolkit for Containers Operator
  6. Provided APIs 下,找到 Migration Controller 标题,再点 Create Instance
  7. 点击 Create
  8. WorkloadsPods 来验证 MTC pod 正在运行 。

1.4.1.2. 在 OpenShift Container Platform 3 源集群中安装 MTC

您可以在 OpenShift Container Platform 3 源集群中手动安装 MTC。

重要

您必须在 OpenShift Container Platform 3 和 4 集群上安装相同的 MTC 版本。

要确保 OpenShift Container Platform 3 集群上有最新的版本,请在准备好创建并运行迁移计划时下载 operator.ymlcontroller-3.yml 文件。

先决条件

  • 必须使用在所有集群中具有 cluster-admin 权限的用户登录。
  • 您必须有权访问 registry.redhat.io
  • 必须安装 podman
  • 源集群必须是 OpenShift Container Platform 3.7 、3.9 、3.10 或 3.11。
  • 必须将源集群配置为从 registry.redhat.io 中拉取镜像。

    要拉取镜像,您必须创建一个镜像流 secret,并将其复制到集群中的每个节点。

流程

  1. 使用您的红帽客户门户网站账户登陆到 registry.redhat.io

    $ sudo podman login registry.redhat.io
  2. 下载 operator.yml 文件:

    $ sudo podman cp $(sudo podman create \
      registry.redhat.io/rhmtc/openshift-migration-rhel7-operator:v1.4):/operator.yml ./
  3. 下载 controller-3.yml 文件:

    $ sudo podman cp $(sudo podman create \
      registry.redhat.io/rhmtc/openshift-migration-rhel7-operator:v1.4):/controller-3.yml ./
  4. 登录您的 OpenShift Container Platform 3 集群。
  5. 验证集群可以在 registry.redhat.io 中进行身份验证:

    $ oc run test --image registry.redhat.io/ubi8 --command sleep infinity
  6. 创建 MTC Operator 对象的 Migration Toolkit:

    $ oc create -f operator.yml

    输出示例

    namespace/openshift-migration created
    rolebinding.rbac.authorization.k8s.io/system:deployers created
    serviceaccount/migration-operator created
    customresourcedefinition.apiextensions.k8s.io/migrationcontrollers.migration.openshift.io created
    role.rbac.authorization.k8s.io/migration-operator created
    rolebinding.rbac.authorization.k8s.io/migration-operator created
    clusterrolebinding.rbac.authorization.k8s.io/migration-operator created
    deployment.apps/migration-operator created
    Error from server (AlreadyExists): error when creating "./operator.yml":
    rolebindings.rbac.authorization.k8s.io "system:image-builders" already exists 1
    Error from server (AlreadyExists): error when creating "./operator.yml":
    rolebindings.rbac.authorization.k8s.io "system:image-pullers" already exists

    1
    您可以忽略 Error from server (AlreadyExists) 信息。它们是由 MTC Operator 为早期版本的 OpenShift Container Platform 3 创建资源造成的,这些资源在以后的版本中已提供。
  7. 创建 MigrationController 对象:

    $ oc create -f controller-3.yml
  8. 验证 VeleroRestic pod 是否正在运行:

    $ oc get pods -n openshift-migration

1.4.2. 在受限环境中安装 MTC

您可以在受限环境中安装 MTC。

重要

您必须在所有集群中安装相同的 MTC 版本。

您可以为 OpenShift Container Platform 4 构建自定义 Operator 目录镜像,将其推送到本地镜像 registry,并将 Operator Lifecycle Manager(OLM)配置为从本地 registry 安装 Containers Operator 的 Migration Toolkit for Containers Operator。

1.4.2.1. 构建 Operator 目录镜像

集群管理员可以根据 Operator Lifecycle Manager(OLM)使用的 Package Manifest Format 来构建自定义 Operator 目录镜像。目录镜像可推送到支持 Docker v2-2 的容器镜像 registry。对于受限网络中的集群,此 registry 可以是集群有网络访问权限的 registry,如在受限网络集群安装过程中创建的镜像 registry。

重要

OpenShift Container Platform 集群的内部 registry 不能用作目标 registry,因为它不支持没有标签的推送(在镜像过程中需要这个功能)。

在这一示例中,流程假定在使用镜像 registry 时可访问您的网络以及互联网。

注意

只有 oc 客户端的 Linux 版本可用于此流程,因为 Windows 和 macOS 版本不提供 oc adm catalog build 命令。

先决条件

  • 没有网络访问限制的工作站
  • oc 版本 4.3.5+ Linux 客户端
  • podman 1.4.4+ 版
  • 访问支持 Docker v2-2 的镜像(mirror)registry
  • 如果您正在使用私有 registry,请将 REG_CREDS 环境变量设置为到 registry 凭证的文件路径。例如,对于 podman CLI:

    $ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json
  • 如果您正在使用 quay.io 帐户可访问的私有命名空间,您必须设置 Quay 身份验证令牌。使用您的 quay.io 凭证对登录 API 发出请求,从而设置用于 --auth-token 标志的 AUTH_TOKEN 环境变量:

    $ AUTH_TOKEN=$(curl -sH "Content-Type: application/json" \
        -XPOST https://quay.io/cnr/api/v1/users/login -d '
        {
            "user": {
                "username": "'"<quay_username>"'",
                "password": "'"<quay_password>"'"
            }
        }' | jq -r '.token')

流程

  1. 在没有网络访问限制的工作站中,与目标镜像(mirror) registry 进行身份验证:

    $ podman login <registry_host_name>

    还可使用 registry.redhat.io 验证,以便在构建期间拉取基础镜像:

    $ podman login registry.redhat.io
  2. 根据 Quay.io 中的 redhat-operators 目录构建目录镜像,进行标记并将其推送到您的镜像 registry:

    $ oc adm catalog build \
        --appregistry-org redhat-operators \1
        --from=registry.redhat.io/openshift4/ose-operator-registry:v4.5 \2
        --filter-by-os="linux/amd64" \3
        --to=<registry_host_name>:<port>/olm/redhat-operators:v1 \4
        [-a ${REG_CREDS}] \5
        [--insecure] \6
        [--auth-token "${AUTH_TOKEN}"] 7
    1
    从 App Registry 实例中拉取的机构(命名空间)。
    2
    使用与目标 OpenShift Container Platform 集群主版本和次版本匹配的标签,将 --from 设置为 ose-operator-registry 基础镜像。
    3
    --filter-by-os 设置为用于基本镜像的操作系统和架构,该镜像必须与目标 OpenShift Container Platform 集群匹配。有效值是 linux/amd64linux/ppc64lelinux/s390x
    4
    为您的目录镜像命名并包含标签,例如: v1
    5
    可选:如果需要,指定 registry 凭证文件的位置。
    6
    可选:如果您不想为目标 registry 配置信任,请添加 --insecure 标志。
    7
    可选:如果使用其他不公开的应用程序 registry 目录,则需要指定 Quay 身份验证令牌。

    输出示例

    INFO[0013] loading Bundles                               dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605
    ...
    Pushed sha256:f73d42950021f9240389f99ddc5b0c7f1b533c054ba344654ff1edaf6bf827e3 to example_registry:5000/olm/redhat-operators:v1

    有时红帽提供的无效清单是意外引入的目录 ; 当发生这种情况时,您可能会看到一些错误:

    出错的输出示例

    ...
    INFO[0014] directory                                     dir=/var/folders/st/9cskxqs53ll3wdn434vw4cd80000gn/T/300666084/manifests-829192605 file=4.2 load=package
    W1114 19:42:37.876180   34665 builder.go:141] error building database: error loading package into db: fuse-camel-k-operator.v7.5.0 specifies replacement that couldn't be found
    Uploading ... 244.9kB/s

    这些错误通常不是致命的,如果所提及 Operator 软件包不包含您计划安装的 Operator 或其依赖项,则可以忽略它们。

1.4.2.2. 针对受限网络配置 OperatorHub

集群管理员可以使用自定义 Operator 目录镜像将 OLM 和 OperatorHub 配置为在受限网络环境中使用本地内容。本例中的流程使用之前构建并推送到受支持的 registry 的自定义 redhat-operators 目录镜像。

先决条件

  • 没有网络访问限制的工作站
  • 推送到受支持的 registry 的自定义 Operator 目录镜像
  • oc 版本 4.3.5+
  • podman 1.4.4+ 版
  • 访问支持 Docker v2-2 的镜像(mirror)registry
  • 如果您正在使用私有 registry,请将 REG_CREDS 环境变量设置为到 registry 凭证的文件路径。例如,对于 podman CLI:

    $ REG_CREDS=${XDG_RUNTIME_DIR}/containers/auth.json

流程

  1. oc adm catalog mirror 命令提取自定义 Operator catalog 镜像的内容,以生成镜像(mirror)所需的清单:您可以选择:

    • 允许该命令的默认行为在生成清单后自动将所有镜像内容镜像到您的镜像 registry 中,或者
    • 添加 --manifests-only 标志来只生成镜像所需的清单,但并不实际将镜像内容镜像到 registry。这对检查哪些要镜像(mirror)非常有用。如果您只需要部分内容的话,可以对映射列表做出任何修改。然后,您可以使用该文件与 oc image mirror 命令一起,在以后的步骤中镜像修改的镜像列表。

    在没有网络访问限制的工作站中,运行以下命令:

    $ oc adm catalog mirror \
        <registry_host_name>:<port>/olm/redhat-operators:v1 \1
        <registry_host_name>:<port> \
        [-a ${REG_CREDS}] \2
        [--insecure] \3
        --filter-by-os='.*' \4
        [--manifests-only] 5
    1
    指定 Operator 目录镜像。
    2
    可选:如果需要,指定 registry 凭证文件的位置。
    3
    可选:如果您不想为目标 registry 配置信任,请添加 --insecure 标志。
    4
    由于对多个构架支持的已知问题,当前需要此标志。
    5
    可选:只生成镜像所需的清单,但并不实际将镜像内容镜像到 registry。
    警告

    如果未设置 --filter-by-os 标志或设置为 .* 以外的任何值,该命令会过滤不同的架构,用来更改清单列表摘要,也称为 多架构镜像。不正确的摘要会导致在断开连接的集群中部署这些镜像和 Operator 失败。如需更多信息,请参阅 BZ#1890951

    输出示例

    using database path mapping: /:/tmp/190214037
    wrote database to /tmp/190214037
    using database at: /tmp/190214037/bundles.db 1
    ...

    1
    命令生成的临时数据库。

    在运行命令后,会在当前目录中生成 <image_name>-manifests/ 目录以及以下文件:

    • 用来定义 ImageContentSourcePolicy 对象的 imageContentSourcePolicy.yaml,它可以将节点配置为在 Operator 清单中存储的镜像(image)引用和镜像 (mirror) 的 registry 间进行转换。
    • mapping.txt 文件,在其中包含所有源镜像,并将它们映射到目标 registry。此文件与 oc image mirror 命令兼容,可用于进一步自定义镜像(mirror)配置。
  2. 如果您在上一步中使用 --manifests-only 标志,并只想镜像部分内容:

    1. mapping.txt 文件中的镜像列表改为您的规格。如果您不确定要镜像的镜像子集的名称和版本,请使用以下步骤查找:

      1. oc adm catalog mirror 命令生成的临时数据库运行 sqlite3 工具,以检索与一般搜索查询匹配的镜像列表。输出以后如何编辑 mapping.txt 文件的帮助信息。

        例如,要检索与字符串 clusterlogging.4.3 类似的镜像列表:

        $ echo "select * from related_image \
            where operatorbundle_name like 'clusterlogging.4.3%';" \
            | sqlite3 -line /tmp/190214037/bundles.db 1
        1
        请参阅 oc adm catalog mirror 命令的输出结果来查找数据库文件的路径。

        输出示例

        image = registry.redhat.io/openshift4/ose-logging-kibana5@sha256:aa4a8b2a00836d0e28aa6497ad90a3c116f135f382d8211e3c55f34fb36dfe61
        operatorbundle_name = clusterlogging.4.3.33-202008111029.p0
        
        image = registry.redhat.io/openshift4/ose-oauth-proxy@sha256:6b4db07f6e6c962fc96473d86c44532c93b146bbefe311d0c348117bf759c506
        operatorbundle_name = clusterlogging.4.3.33-202008111029.p0
        ...

      2. 使用上一步的结果来编辑 mapping.txt 文件,使其只包含您要镜像的镜像子集。

        例如,您可以使用前面示例输出中的 image 值来找出您的 mapping.txt 文件中存在以下匹配行:

        mapping.txt 中的匹配镜像映射

        registry.redhat.io/openshift4/ose-logging-kibana5@sha256:aa4a8b2a00836d0e28aa6497ad90a3c116f135f382d8211e3c55f34fb36dfe61=<registry_host_name>:<port>/openshift4-ose-logging-kibana5:a767c8f0
        registry.redhat.io/openshift4/ose-oauth-proxy@sha256:6b4db07f6e6c962fc96473d86c44532c93b146bbefe311d0c348117bf759c506=<registry_host_name>:<port>/openshift4-ose-oauth-proxy:3754ea2b

        在这个示例中,如果您只想镜像这些 image,可以在 mapping.txt 文件中删除所有其他条目,仅保留上述两行。

    2. 在您的没有网络访问限制的工作站中,使用您修改的 mapping.txt 文件,使用 oc image mirror 命令将镜像镜像到 registry:

      $ oc image mirror \
          [-a ${REG_CREDS}] \
          --filter-by-os='.*' \
          -f ./redhat-operators-manifests/mapping.txt
      警告

      如果未设置 --filter-by-os 标志或设置为 .* 以外的任何值,该命令会过滤不同的架构,用来更改清单列表摘要,也称为 多架构镜像。不正确的摘要会导致在断开连接的集群中部署这些镜像和 Operator 失败。

  3. 应用 ImageContentSourcePolicy 对象:

    $ oc apply -f ./redhat-operators-manifests/imageContentSourcePolicy.yaml
  4. 创建一个 CatalogSource 对象来引用您的目录镜像。

    1. 按照您的规格修改以下内容,并将它保存为 catalogsource.yaml 文件:

      apiVersion: operators.coreos.com/v1alpha1
      kind: CatalogSource
      metadata:
        name: my-operator-catalog
        namespace: openshift-marketplace
      spec:
        sourceType: grpc
        image: <registry_host_name>:<port>/olm/redhat-operators:v1 1
        displayName: My Operator Catalog
        publisher: grpc
      1
      指定您的自定义 Operator 目录镜像。
    2. 使用该文件创建 CatalogSource 对象:

      $ oc create -f catalogsource.yaml
  5. 确定成功创建以下资源。

    1. 检查 pod:

      $ oc get pods -n openshift-marketplace

      输出示例

      NAME                                    READY   STATUS    RESTARTS  AGE
      my-operator-catalog-6njx6               1/1     Running   0         28s
      marketplace-operator-d9f549946-96sgr    1/1     Running   0         26h

    2. 检查目录源:

      $ oc get catalogsource -n openshift-marketplace

      输出示例

      NAME                  DISPLAY               TYPE PUBLISHER  AGE
      my-operator-catalog   My Operator Catalog   grpc            5s

    3. 检查软件包清单:

      $ oc get packagemanifest -n openshift-marketplace

      输出示例

      NAME    CATALOG              AGE
      etcd    My Operator Catalog  34s

现在,您可在受限网络 OpenShift Container Platform 集群的 web 控制台中,通过 OperatorHub 安装 Operator。

1.4.2.3. 在一个受限的环境中的 OpenShift Container Platform 4.5 目标集群上安装 MTC

您可以在 OpenShift Container Platform 4.5 目标集群上安装 MTC。

先决条件

  • 必须使用在所有集群中具有 cluster-admin 权限的用户登录。
  • 您必须创建自定义 Operator 目录并将其推送到镜像 registry。
  • 您必须将 Operator Lifecycle Manager 配置为从镜像 registry 安装 MTC Operator。

流程

  1. 在 OpenShift Container Platform Web 控制台中,点击 OperatorsOperatorHub
  2. 使用 Filter by keyword 字段查找 MTCs Operator
  3. 选择 Migration Toolkit for Containers Operator 并点 Install

    注意

    不要将订阅批准选项改为 Automatic。在源和目标集群中,Migration Toolkit for Containers 版本必须相同。

  4. 点击 Install

    Installed Operators 页中,openshift-migration 项目中会出现状态为 SucceededMigration Toolkit for Containers Operator

  5. Migration Toolkit for Containers Operator
  6. Provided APIs 下,找到 Migration Controller 标题,再点 Create Instance
  7. 点击 Create
  8. WorkloadsPods 来验证 MTC pod 正在运行 。

1.4.2.4. 在一个受限的环境中的 OpenShift Container Platform 3 源集群上安装 MTC

您可以基于 Migration Toolkit for Containers(MTC)Operator 镜像创建清单文件,并编辑清单以指向本地镜像 registry。然后,您可以使用本地镜像在 OpenShift Container Platform 3 源集群中为 Containers Operator 创建 Migration Toolkit for Containers Operator。

重要

您必须在 OpenShift Container Platform 3 和 4 集群上安装相同的 MTC 版本。

要确保 OpenShift Container Platform 3 集群上有最新的版本,请在准备好创建并运行迁移计划时下载 operator.ymlcontroller-3.yml 文件。

先决条件

  • 必须使用在所有集群中具有 cluster-admin 权限的用户登录。
  • 您必须有权访问 registry.redhat.io
  • 必须安装 podman
  • 源集群必须是 OpenShift Container Platform 3.7 、3.9 、3.10 或 3.11。
  • 您必须有一个具有无限网络访问权限的 Linux 工作站。
  • 您必须有权访问支持 Docker v2-2 的镜像 registry

流程

  1. 通过一个没有网络访问限制的工作站,使用您的红帽客户门户网站凭证登录 registry.redhat.io:

    $ sudo podman login registry.redhat.io
  2. 下载 operator.yml 文件:

    $ sudo podman cp $(sudo podman create \
      registry.redhat.io/rhmtc/openshift-migration-rhel7-operator:v1.4):/operator.yml ./
  3. 下载 controller-3.yml 文件:

    $ sudo podman cp $(sudo podman create \
      registry.redhat.io/rhmtc/openshift-migration-rhel7-operator:v1.4):/controller-3.yml ./
  4. 从在 OpenShift Container Platform 4 集群中运行 oc adm catalog mirror 时创建的 mapping.txt 文件获取 Operator 镜像值:

    $ grep openshift-migration-rhel7-operator ./mapping.txt | grep rhmtc

    输出显示了 registry.redhat.io 镜像和您的镜像 registry 镜像之间的映射。

    输出示例

    registry.redhat.io/rhmtc/openshift-migration-rhel7-operator@sha256:468a6126f73b1ee12085ca53a312d1f96ef5a2ca03442bcb63724af5e2614e8a=<registry.apps.example.com>/rhmtc/openshift-migration-rhel7-operator

  5. 更新 Operator 配置文件中的 imageREGISTRY 值:

    containers:
      - name: ansible
        image: <registry.apps.example.com>/rhmtc/openshift-migration-rhel7-operator@sha256:<468a6126f73b1ee12085ca53a312d1f96ef5a2ca03442bcb63724af5e2614e8a> 1
    ...
      - name: operator
        image: <registry.apps.example.com>/rhmtc/openshift-migration-rhel7-operator@sha256:<468a6126f73b1ee12085ca53a312d1f96ef5a2ca03442bcb63724af5e2614e8a> 2
    ...
        env:
        - name: REGISTRY
          value: <registry.apps.example.com> 3
    1
    mapping.txt 文件中指定您的镜像 registry 和 Operator 镜像的 sha256 值。
    2
    mapping.txt 文件中指定您的镜像 registry 和 Operator 镜像的 sha256 值。
    3
    指定您的镜像 registry。
  6. 登录您的 OpenShift Container Platform 3 集群。
  7. 创建 MTC Operator 对象的 Migration Toolkit:

    $ oc create -f operator.yml

    输出示例

    namespace/openshift-migration created
    rolebinding.rbac.authorization.k8s.io/system:deployers created
    serviceaccount/migration-operator created
    customresourcedefinition.apiextensions.k8s.io/migrationcontrollers.migration.openshift.io created
    role.rbac.authorization.k8s.io/migration-operator created
    rolebinding.rbac.authorization.k8s.io/migration-operator created
    clusterrolebinding.rbac.authorization.k8s.io/migration-operator created
    deployment.apps/migration-operator created
    Error from server (AlreadyExists): error when creating "./operator.yml":
    rolebindings.rbac.authorization.k8s.io "system:image-builders" already exists 1
    Error from server (AlreadyExists): error when creating "./operator.yml":
    rolebindings.rbac.authorization.k8s.io "system:image-pullers" already exists

    1
    您可以忽略 Error from server (AlreadyExists) 信息。它们是由 MTC Operator 为早期版本的 OpenShift Container Platform 3 创建资源造成的,这些资源在以后的版本中已提供。
  8. 创建 MigrationController 对象:

    $ oc create -f controller-3.yml
  9. 验证 VeleroRestic pod 是否正在运行:

    $ oc get pods -n openshift-migration

1.4.3. 升级 MTC

您可以使用 OpenShift Container Platform Web 控制台升级 MTC。

重要

您必须确保在所有集群中安装相同的 MTC 版本。

如果要升级 MTC 1.3,您必须执行额外步骤来更新 MigPlan 自定义资源(CR)。

1.4.3.1. 在 OpenShift Container Platform 4 集群中升级 MTC

您可以使用 OpenShift Container Platform Web 控制台在 OpenShift Container Platform 4 集群上升级 MTC。

先决条件

  • 您必须以具有 cluster-admin 权限的用户身份登录。

流程

  1. 在 OpenShift Container Platform 控制台中导航至 OperatorsInstalled Operators

    处于待定升级的 operator 会显示 Upgrade available 状态。

  2. Migration Toolkit for Containers Operator
  3. Subscription 标签页。任何需要批准的升级都会在 Upgrade Status 旁边显示。例如:它可能会显示 1 requires approval
  4. 1 requires approval,然后点 Preview Install Plan
  5. 查看列出可用于升级的资源,并点 Approve
  6. 返回 Operators → Installed Operators 页面来监控升级的过程。完成后,状态会变为 SucceededUp to date
  7. WorkloadsPods 来验证 MTC pod 正在运行 。

1.4.3.2. 在 OpenShift Container Platform 3 集群中升级 MTC

您可以使用 podman 在 OpenShift Container Platform 3 集群上升级 MTC。

先决条件

  • 您必须以具有 cluster-admin 权限的用户身份登录。
  • 您必须有权访问 registry.redhat.io
  • 必须安装 podman

流程

  1. 使用您的红帽客户门户网站账户登陆到 registry.redhat.io

    $ sudo podman login registry.redhat.io
  2. 下载最新的 operator.yml 文件:

    $ sudo podman cp $(sudo podman create \
      registry.redhat.io/rhmtc/openshift-migration-rhel7-operator:v1.4):/operator.yml ./ 1
    1
    如果需要,可以指定 z-stream 版本。
  3. 替换 MTC Operator:

    $ oc replace --force -f operator.yml
  4. 应用更改:

    • 对于 MTC 1.1.2 及更早的版本,删除 Restic pod:

      $ oc delete pod <restic_pod>
    • 对于 MTC 1.2 及更新的版本:

      1. migration-operator 部署扩展到 0 以停止部署:

        $ oc scale -n openshift-migration --replicas=0 deployment/migration-operator
      2. migration-operator 部署扩展到 1 以启动部署并应用更改:

        $ oc scale -n openshift-migration --replicas=1 deployment/migration-operator
  5. 验证 migration-operator 是否已升级:

    $ oc -o yaml -n openshift-migration get deployment/migration-operator | grep image: | awk -F ":" '{ print $NF }'
  6. 下载最新的 controller-3.yml 文件:

    $ sudo podman cp $(sudo podman create \
      registry.redhat.io/rhmtc/openshift-migration-rhel7-operator:v1.4):/controller-3.yml ./
  7. 创建 migration-controller 对象:

    $ oc create -f controller-3.yml
  8. 如果您的 OpenShift Container Platform 版本是 3.10 或更早版本,请将 migration-controller 服务帐户的安全上下文约束设置为 anyuid,以启用直接镜像迁移和直接卷迁移:

    $ oc adm policy add-scc-to-user anyuid -z migration-controller -n openshift-migration
  9. 验证 MTC Pod 是否正在运行:

    $ oc get pods -n openshift-migration
  10. 如果您之前已将 OpenShift Container Platform 3 集群添加到 MTC web 控制台,必须在 web 控制台中更新服务帐户令牌,因为升级过程会删除并恢复 openshift-migration 命名空间:

    1. 获取服务帐户令牌:

      $ oc sa get-token migration-controller -n openshift-migration
    2. 在 MTC web 控制台中点 Clusters
    3. 点击集群 kebab 旁边的 Options 菜单并选择 Edit
    4. Service account token 字段中输入新服务帐户令牌
    5. 点击 Update cluster,然后点击 Close

1.4.3.3. 将 MTC 1.3 升级到 1.4

如果要将 MTC 版本 1.3.x 升级到 1.4,您必须更新运行 MigrationController Pod 的集群中的 MigPlan 自定义资源(CR)清单。

由于 MTC 1.3 中不存在 indirectImageMigrationindirectVolumeMigration 参数,它们在 1.4 版中的默认值会为 false,这意味着启用了直接镜像迁移和直接卷迁移。由于没有满足直接迁移要求,迁移计划无法变为 Ready 状态,除非将这些参数值改为 true

先决条件

  • 已安装了 MTC 1.3。
  • 您必须以具有 cluster-admin 权限的用户身份登录。

流程

  1. 登录到运行 MigrationController Pod 的集群。
  2. 获取 MigPlan CR 清单:

    $ oc get migplan <migplan> -o yaml -n openshift-migration
  3. 更新以下参数值,并将文件保存为 migplan.yaml

    ...
    spec:
      indirectImageMigration: true
      indirectVolumeMigration: true
  4. 替换 MigPlan CR 清单以应用更改:

    $ oc replace -f migplan.yaml -n openshift-migration
  5. 获取更新的 MigPlan CR 清单以验证更改:

    $ oc get migplan <migplan> -o yaml -n openshift-migration