容器迁移工具包 (MTC) 的版本说明描述了新功能和增强功能、已弃用的功能以及已知问题。
MTC 使您可以以命名空间为粒度在 OpenShift Container Platform 集群之间迁移应用程序工作负载。
MTC 提供基于 Kubernetes 自定义资源的 Web 控制台和 API,以帮助您控制迁移并最大限度地减少应用程序停机时间。
有关 MTC 支持策略的信息,请参阅 OpenShift 应用程序和集群迁移解决方案,它是 Red Hat OpenShift Container Platform 生命周期策略 的一部分。
容器迁移工具包 (MTC) 1.8.5 包含以下技术变更
FIPS 是美国联邦政府根据《联邦信息安全管理法案》(FISMA) 制定的一套计算机安全标准。
从 1.8.5 版本开始,MTC 旨在符合 FIPS 标准。
更多信息,请参见 Jira 中的MTC 1.8.5 已解决的问题列表。
MTC 1.8.5 存在以下已知问题
OpenShift Container Platform 4.12 中服务帐户关联的安全上下文约束 (SCC) 无法迁移。此问题计划在未来的 MTC 版本中解决。(MIG-1454)
statefulset.spec.volumeClaimTemplates[].spec.storageClassName
在为 StatefulSet 应用程序运行存储类转换时,MTC 会更新.spec.volumeClaimTemplates[].metadata.name
中的持久卷声明 (PVC) 引用以使用迁移后的 PVC 名称。MTC 不会更新spec.volumeClaimTemplates[].spec.storageClassName
,这会导致应用程序向上扩展。此外,新副本使用旧存储类下创建的 PVC,而不是迁移后的存储类。(MIG-1660)
在多个应用程序上运行StorageClass
转换时,MTC 会在切换阶段缩容命名空间中的所有应用程序,包括那些未参与迁移的应用程序。(MIG-1661)
MigPlan
使其目标命名空间与源集群相同在 MTC UI 中创建MigPlan
时,将目标命名空间更改为与源命名空间不同的命名空间后,无法再次编辑MigPlan
以使目标命名空间与源命名空间相同。(MIG-1600)
将包含BuildConfig
的应用程序从源集群迁移到目标集群时,构建器 pod 会遇到错误,无法将镜像推送到镜像注册表。(BZ#2234781)
创建导致冲突错误的新状态迁移计划时,错误会在显示后不久清除。(BZ#2144299)
pv_resizing_threshold
后未显示PvCapacityAdjustmentRequired
警告调整pv_resizing_threshold
后,迁移计划中不会显示PvCapacityAdjustmentRequired
警告。(BZ#2270160)
有关所有已知问题的完整列表,请参见 Jira 中的MTC 1.8.5 已知问题列表。
容器迁移工具包 (MTC) 1.8.4 包含以下技术变更
MTC 1.8.4 扩展了其依赖项解析,以支持使用 OpenShift 数据保护 API (OADP) 1.4。
MTC 1.8.4 添加了对使用直接卷迁移 (DVM) 的 KubeVirt 虚拟机 (VM) 的支持。
MTC 1.8.4 已解决以下主要问题
python3-openshift
包中存在一个 bug,安装 OpenShift Virtualization 会暴露出该 bug,并返回一个异常ValueError: too many values to unpack
。早期版本的 MTC 受此影响,而 MTC 1.8.4 已实现了一种解决方法。更新到 MTC 1.8.4 后,您将不再受此问题的影响。(OCPBUGS-38116)
尝试从 MTC UI 创建迁移计划时,迁移计划向导会卡在“命名空间”步骤。此问题已在 MTC 1.8.4 中解决。(MIG-1597)
在应用程序迁移期间,所有必要步骤(包括备份、DVM 和恢复)都已成功完成。但是,迁移被标记为不成功,并显示错误消息no matches for kind Virtual machine in version kubevirt/v1
。(MIG-1594)
从源集群迁移到目标集群时,如果目标命名空间与源命名空间不同,则 DVM 会失败。(MIG-1592)
使用直接镜像迁移 (DIM) 时,如果在迁移计划上设置了标签选择器,DIM 不会遵守它,而是尝试迁移命名空间中的所有 imagestream。(MIG-1533)
MTC 1.8.4 存在以下已知问题
OpenShift Container Platform 4.12 中服务帐户关联的安全上下文约束 (SCC) 无法迁移。此问题计划在未来的 MTC 版本中解决。(MIG-1454)。
由于权限问题导致 Rsync pod 无法启动,因此 DVM 阶段失败。
将包含BuildConfig
的应用程序从源集群迁移到目标集群时,构建器 pod 会出现错误,无法将镜像推送到镜像注册表。
创建导致冲突错误的新状态迁移计划时,该错误会在显示后不久清除。
调整pv_resizing_threshold
后,迁移计划中不会显示PvCapacityAdjustmentRequired
警告。
容器迁移工具包 (MTC) 1.8.3 包含以下技术变更
MTC 1.8.3 将 OpenShift 数据保护 API (OADP) 添加为 MTC 1.8.z 的依赖项。
MTC 1.8.3 已解决以下主要问题
protobuf
模块中的缺陷导致unmarshal
函数进入无限循环在之前的 MTC 版本中,发现 Golang 的protobuf
模块中存在一个漏洞,其中unmarshal
函数在处理某些无效输入时会进入无限循环。因此,攻击者提供精心构造的无效输入,导致该函数进入无限循环。
通过此更新,unmarshal
函数可以按预期工作。
更多信息,请参见 CVE-2024-24786。
在之前的 MTC 版本中,Axios 1.5.1 中发现了一个漏洞,该漏洞无意中泄露了存储在 Cookie 中的机密XSRF-TOKEN
,因为它在对主机的每次请求中都将其包含在 HTTP 头部X-XSRF-TOKEN
中,允许攻击者查看敏感信息。
更多信息,请参见 CVE-2023-45857。
在之前的 MTC 版本中,使用路由部署应用程序时,某些文件未迁移。当源工作负载的静止选项未选中时,Restic 备份无法按预期运行。
此问题已在 MTC 1.8.3 中解决。
更多信息,请参见 BZ#2242064。
Migration Controller
无法安装由于 Velero 中的 unsupported value 错误,MigrationController
无法安装。将 OADP 1.3.0 更新到 OADP 1.3.1 可解决此问题。更多信息,请参见 BZ#2267018。
此问题已在 MTC 1.8.3 中解决。
有关所有已解决问题的完整列表,请参见 Jira 中的 MTC 1.8.3 已解决的问题列表。
容器迁移工具包 (MTC) 1.8.3 存在以下已知问题
python3-openshift
包中存在一个错误,安装 OpenShift Virtualization 会暴露出该错误,并返回一个异常ValueError: too many values to unpack
。MTC 1.8.4 已实现一个解决方法。更新到 MTC 1.8.4 后,您将不再受此问题影响。(OCPBUGS-38116)
无法迁移 OpenShift Container Platform 4.12 版本中服务帐户关联的安全上下文约束 (SCC)。此问题计划在未来的 MTC 版本中解决。(MIG-1454)。
有关所有已知问题的完整列表,请参见 Jira 中的 MTC 1.8.3 已知问题列表。
此版本解决了以下主要问题
在之前的容器迁移工具包 (MTC) 版本中,编辑复制存储库、添加自定义 CA 证书、成功连接存储库并触发迁移后,在备份阶段发生故障。
在之前的 (MTC) 版本中,MTC 中使用的 4.1.3 之前的tough-cookie
包版本容易受到原型污染攻击。此漏洞的发生是因为当rejectPublicSuffixes
的值设置为false
时,CookieJar 没有正确处理 Cookie。
更多详情,请参见 (CVE-2023-26136)
在之前的 (MTC) 版本中,MTC 中使用的 7.5.2 之前的semver
包版本容易受到来自函数newRange
的正则表达式拒绝服务 (ReDoS) 攻击,当提供不受信任的用户数据作为范围时。
更多详情,请参见 (CVE-2022-25883)
MTC 1.8.2 存在以下已知问题
python3-openshift
包中存在一个错误,安装 OpenShift Virtualization 会暴露出该错误,并返回一个异常ValueError: too many values to unpack
。MTC 1.8.4 已实现一个解决方法。更新到 MTC 1.8.4 后,您将不再受此问题影响。(OCPBUGS-38116)
容器迁移工具包 (MTC) 1.8.1 解决了以下主要问题
在 MTC 使用的 HTTP/2 协议中处理多路复用流时发现了一个缺陷。客户端可以反复请求新的多路复用流并立即发送RST_STREAM
帧以取消它。这会为服务器创建额外的设置和拆卸流的工作负载,同时避免任何服务器端对每个连接上的最大活动流数的限制,从而导致由于服务器资源消耗而导致拒绝服务。(BZ#2245079)
建议更新到 MTC 1.8.1 或更高版本,以解决此问题。
更多详情,请参见 (CVE-2023-39325) 和 (CVE-2023-44487)
容器迁移工具包 (MTC) 1.8.1 存在以下已知问题
python3-openshift
包中存在一个错误,安装 OpenShift Virtualization 会暴露出该错误。在任务期间返回一个异常ValueError: too many values to unpack
。MTC 1.8.4 已实现一个解决方法。更新到 MTC 1.8.4 后,您将不再受此问题影响。(OCPBUGS-38116)
容器迁移工具包 (MTC) 1.8.0 解决了以下问题
在之前的版本中,由于InvalidImageName
错误,间接迁移卡在了备份阶段。(BZ#2233097)
在之前的版本中,执行间接迁移时,迁移卡在了恢复
阶段,等待podvolumerestore
完成。(BZ#2233868)
在之前的版本中,将应用程序迁移到目标集群时,迁移的应用程序无法从内部镜像注册表中拉取镜像,导致应用程序失败
。(BZ#2233103)
在之前的版本中,在 Azure 集群上,当备份到 Azure 存储时,迁移在备份
阶段失败。(BZ#2238974)
MTC 1.8.0 存在以下已知问题
python3-openshift
包中存在一个错误,安装 OpenShift Virtualization 会暴露出该错误,并返回一个异常ValueError: too many values to unpack
。MTC 1.8.4 已实现一个解决方法。更新到 MTC 1.8.4 后,您将不再受此问题影响。(OCPBUGS-38116)
在本版本中,将MTC Operator从1.7.x升级到1.8.x时,旧的Restic pod不会被删除。因此,升级后,Restic和node-agent pod都会在命名空间中可见。((BZ#2236829))
在本版本中,在将包含BuildConfig
的应用程序从源集群迁移到目标集群时,构建器pod会返回error
,无法将镜像推送到镜像注册表。((BZ#2234781))
在本版本中,在为MigStorage中的MCG NooBaa存储桶启用Require SSL verification
并向CA证书文件添加内容后,连接会按预期失败。但是,当通过删除CA证书内容并清除Require SSL verification
来撤消这些更改时,连接仍然失败。只有删除并重新添加存储库才能解决此问题。((BZ#2240052))
在(MTC)中,编辑复制存储库、添加自定义CA证书、成功连接存储库并触发迁移后,在备份阶段会发生故障。
此问题已在MTC 1.8.2中解决。
MTC中使用的tough-cookie
包的4.1.3之前的版本容易受到原型污染漏洞的影响。当rejectPublicSuffixes
的值设置为false
时,此漏洞是因为CookieJar没有正确处理cookie。
此问题已在MTC 1.8.2中解决。
更多详情,请参见 (CVE-2023-26136)
在(MTC)的先前版本中,MTC中使用的semver
包的7.5.2之前的版本容易受到来自newRange
函数的正则表达式拒绝服务(ReDoS)攻击,当提供不受信任的用户数据作为范围时。
此问题已在MTC 1.8.2中解决。
更多详情,请参见 (CVE-2022-25883)
此版本包含以下技术变更
从OpenShift Container Platform 3迁移到OpenShift Container Platform 4需要使用旧版容器迁移工具操作器和容器迁移工具1.7.x。
不支持从MTC 1.7.x迁移到MTC 1.8.x。
必须使用MTC 1.7.x迁移任何源为OpenShift Container Platform 4.9或更早版本的资源。
源和目标都需要使用MTC 1.7.x。
容器迁移工具(MTC) 1.8.x仅支持从OpenShift Container Platform 4.10或更高版本迁移到OpenShift Container Platform 4.10或更高版本。对于仅涉及4.10及更高版本集群的迁移,可以使用1.7.x或1.8.x。但是,源和目标必须使用相同的MTC 1.Y.z版本。
不支持从源MTC 1.7.x迁移到目标MTC 1.8.x。
不支持从源MTC 1.8.x迁移到目标MTC 1.7.x。
支持从源MTC 1.7.x迁移到目标MTC 1.7.x。
支持从源MTC 1.8.x迁移到目标MTC 1.8.x。
MTC 1.8.x默认安装OADP 1.2.x。
从MTC 1.7.x升级到MTC 1.8.0需要手动将OADP通道更改为1.2。如果不这样做,操作器的升级将会失败。