2.2. Migration Toolkit for Containers 1.7 发行注记
该版本的 Migration Toolkit for Containers 发行注记介绍了新的功能和增强功能、已弃用的功能以及已知的问题。
MTC(Migration Toolkit for Containers)可让您按照命名空间将应用程序工作负载在不同 OpenShift Container Platform 集群间进行迁移。
您可以从 OpenShift Container Platform 3 迁移到 4.17,也可以在 OpenShift Container Platform 4 集群之间迁移。
MTC 提供了一个基于 Kubernetes 自定义资源的 web 控制台和 API,可帮助您控制迁移并最小化应用程序停机时间。
有关 MTC 支持政策的信息,请参阅 OpenShift Application and Cluster Migration Solutions,它是 Red Hat OpenShift Container Platform 生命周期政策的一部分。
2.2.1. Migration Toolkit for Containers 1.7.17 发行注记
Migration Toolkit for Containers (MTC) 1.7.17 只是一个 Container Grade (CGO) 版本,用于刷新容器的健康状态等级,与 MTC 1.7.16 相比,不会对产品本身中的任何代码进行更改。
2.2.2. Migration Toolkit for Containers 1.7.16 发行注记
2.2.2.1. 已解决的问题
此发行版本有以下解决的问题:
CVE-2023-45290: Golang: net/http
: Memory exhaustion in the Request.ParseMultipartForm
method
net/http
Golang 标准库软件包中发现了一个安全漏洞,它会影响 MTC 的早期版本。在以前的版本中,当解析 multipart
表单时,可以明确使用 Request.ParseMultipartForm
,或使用 Request.FormValue
, Request.PostFormValue
, 或 Request.FormFile
方法隐式应用,解析表单的总大小限制不适用于在读单一表单行时消耗的内存。这可能会允许在恶意设计的输入中包含非常长的行,从而导致分配大量内存,这可能会导致内存耗尽。
要解决这个问题,升级到 MTC 1.7.16。
如需了解更多详细信息,请参阅 CVE-2023-45290
CVE-2024-24783: Golang: crypto/x509
: Verify panics on certificates with an unknown public key algorithm
在 crypto/x509
Golang 标准库软件包中发现了一个安全漏洞,它会影响 MTC 的早期版本。验证包含带有未知公钥算法的证书的证书链会导致 Certificate.Verify
panic。这会影响将 Config.ClientAuth
设置为 VerifyClientCertIfGiven
或 RequireAndVerifyClientCert
的所有 crypto/tls
客户端和服务器。默认行为是 TLS 服务器无法验证客户端证书。
要解决这个问题,升级到 MTC 1.7.16。
如需了解更多详细信息,请参阅 CVE-2024-24783。
CVE-2024-24784: Golang: net/mail
: 显示名称中的注释被错误处理
net/mail
Golang 标准库软件包中发现了一个安全漏洞,它会影响 MTC 的早期版本。ParseAddressList
函数错误地处理注释、文本(括号中的文本)和显示名称。由于这与地址解析程序不匹配,因此可能会导致使用不同解析器的程序进行不同的信任决策。
要解决这个问题,升级到 MTC 1.7.16。
如需了解更多详细信息,请参阅 CVE-2024-24784。
CVE-2024-24785: Golang: html/template
: Errors returned from MarshalJSON
methods may break template escaping
在 html/template
Golang 标准库软件包中发现了一个安全漏洞,它会影响 MTC 的早期版本。 如果来自 MarshalJSON
方法返回的错误包含用户控制的数据,则它们可能会用来破坏 html/template
软件包的上下文自动转义行为,以便后续操作将意外内容注入模板。
要解决这个问题,升级到 MTC 1.7.16。
如需了解更多详细信息,请参阅 CVE-2024-24785。
CVE-2024-29180: webpack-dev-middleware
: Lack of URL validation may lead to file leak
webpack-dev-middleware 软件包
中发现了一个安全漏洞,它会影响 MTC 的早期版本。在返回本地文件前,这个缺陷无法验证提供的 URL 地址,这可让攻击者编写 URL 来从开发人员机器返回任意本地文件。
要解决这个问题,升级到 MTC 1.7.16。
如需了解更多详细信息,请参阅 CVE-2024-29180。
CVE-2024-30255: envoy
: HTTP/2 CPU exhaustion due to CONTINUATION frame flood
在 envoy
代理如何实现 HTTP/2 codec 中发现了一个安全漏洞,这会影响早期版本的 MTC。对可在单一流内发送的 CONTINUATION
帧数量有不足的限制,即使超过 envoy
的标题映射限制。这个漏洞可能会允许未经身份验证的远程攻击者向存在安全漏洞的服务器发送数据包。这些数据包可能会消耗计算资源并导致拒绝服务(DoS)。
要解决这个问题,升级到 MTC 1.7.16。
如需了解更多详细信息,请参阅 CVE-2024-30255。
2.2.2.2. 已知问题
这个版本有以下已知问题:
直接卷迁移失败,因为源集群中的 Rsync pod 进入 Error
状态
在使用持久性卷声明(PVC)迁移任何应用程序时,Stage
migration 操作会成功显示警告,而直接卷迁移(DVM)会失败,源命名空间中的 rsync
pod 会进入 error
状态。(BZ#2256141)
冲突条件会在创建后被清除
在创建导致冲突错误消息的新状态迁移计划时,错误消息会在显示后很快清除。(BZ#2144299)
当集群中配置了不同提供程序类型的多个卷快照位置时,迁移会失败
当具有不同供应商类型的集群中有多个卷快照位置(VSL)时,但没有将任何它们设置为默认的 VSL,Velero 会导致迁移操作失败。(BZ#2180565)
2.2.3. Migration Toolkit for Containers 1.7.15 发行注记
2.2.3.1. 已解决的问题
此发行版本有以下解决的问题:
CVE-2024-24786: 在 Golang 的 protobuf 模块中发现了一个安全漏洞,unmarshal 功能可以进入一个死循环
在 protojson.Unmarshal
函数中发现了一个安全漏洞,它可能会导致函数在 unmarshaling 特定的无效 JSON 消息时进入死循环。当 unmarshaling 到一个包括了 google.protobuf.Any
值的信息或在 JSON 格式的消息中设置了 UnmarshalOptions.DiscardUnknown
选项时,这个条件会发生。
要解决这个问题,升级到 MTC 1.7.15。
如需了解更多详细信息,请参阅 (CVE-2024-24786)。
CVE-2024-28180: jose-go
错误处理高度压缩的数据
在 Jose 中发现了一个因为处理高压缩数据不当造成的漏洞。攻击者可以发送一个 JSON Web 加密(JWE)加密消息,其中包含在解压缩 Decrypt
或 DecryptMulti
功能时使用的大量内存和 CPU 的压缩数据。
要解决这个问题,升级到 MTC 1.7.15。
如需了解更多详细信息,请参阅 (CVE-2024-28180)。
2.2.3.2. 已知问题
这个版本有以下已知问题:
直接卷迁移失败,因为源集群中的 Rsync pod 进入 Error
状态
在使用持久性卷声明(PVC)迁移任何应用程序时,Stage
migration 操作会成功显示警告,而直接卷迁移(DVM)会失败,源命名空间中的 rsync
pod 会进入 error
状态。(BZ#2256141)
冲突条件会在创建后被清除
在创建导致冲突错误消息的新状态迁移计划时,错误消息会在显示后很快清除。(BZ#2144299)
当集群中配置了多个不同提供程序类型的卷快照位置(VSL)时,迁移会失败,且没有指定默认 VSL。
当集群中具有不同提供程序类型的集群中有多个 VSL,并且没有设置它们作为默认的 VSL,Velero 会产生一个验证错误,导致迁移操作失败。(BZ#2180565)
2.2.4. Migration Toolkit for Containers 1.7.14 发行注记
2.2.4.1. 已解决的问题
此发行版本有以下解决的问题:
CVE-2023-39325 CVE-2023-44487: 各种安全漏洞
在处理 HTTP/2 协议(被 MTC 使用)中的多路流中发现了一个安全漏洞。 客户端可以重复请求新的多路流,然后立即发送 RST_STREAM
帧来取消这些请求。对于设置和分离流,这个活动会为服务器创建额外的工作负载,但避免了每个连接的最大活跃流数量的服务器端限制。这会导致因为服务器的资源被耗尽而出现拒绝服务的问题。
要解决这个问题,升级到 MTC 1.7.14。
如需了解更多详细信息,请参阅 (CVE-2023-44487) 和 (CVE-2023-39325)。
CVE-2023-39318 CVE-2023-39319 CVE-2023-39321: 各种安全漏洞
(CVE-2023-39318): 在 Golang 中发现了一个安全漏洞,它被 MTC 使用。
html/template
软件包没有正确处理类似 HTML 的""
注释令牌,或者在<script>
上下文中正确处理 hashbang"#!"
注释令牌。此漏洞可能会导致模板解析器错误地解释<script>
上下文的内容,从而导致操作被不当转义。(CVE-2023-39319): 在 Golang 中发现了一个安全漏洞,它被 MTC 使用。对于 <script> 中的 JavaScript 代码,
html/template
软件包没有应用正确的规则来处理同时存在的"<script"
,"<!--"
, 和"</script"
。这可能会导致模板解析器错误地认为脚本已结束,从而导致操作被不当转义。(CVE-2023-39321): 在 Golang 中发现了一个安全漏洞,它被 MTC 使用。为 QUIC 连接处理不完整的 post-handshake 消息可能会导致 panic。
(CVE-2023-3932): 在 Golang 中发现了一个安全漏洞,它被 MTC 使用。使用 QUIC 传输协议进行连接时,当在读取握手后消息时对缓冲区的数据量没有设置上限,从而使恶意的 QUIC 连接可以导致内存的使用大量增加。
要解决这个问题,升级到 MTC 1.7.14。
如需了解更多详细信息,请参阅 (CVE-2023-39318), (CVE-2023-39319) 和 (CVE-2023-39321)。
2.2.4.2. 已知问题
这个版本没有主要已知的问题。
2.2.5. Migration Toolkit for Containers 1.7.13 发行注记
2.2.5.1. 已解决的问题
这个版本没有主要解决的问题。
2.2.5.2. 已知问题
这个版本没有主要已知的问题。
2.2.6. Migration Toolkit for Containers 1.7.12 发行注记
2.2.6.1. 已解决的问题
这个版本没有主要解决的问题。
2.2.6.2. 已知问题
这个版本有以下已知问题:
Migration details 页面中会显示错误代码 504
在 Migration details 页面中,首先会显示 迁移详情
,且没有任何问题。但是,在一段时间后,详情会消失,并返回 504
错误。(BZ#2231106)
当将 MTC 1.7.x 升级到 MTC 1.8 时,旧的 restic pod 不会被删除
在将 MTC operator 从 1.7.x 升级到 1.8.x 时,旧的 restic pod 不会被删除。升级后,restic 和 node-agent pod 在命名空间中可见。(BZ#2236829)
2.2.7. Migration Toolkit for Containers 1.7.11 发行注记
2.2.7.1. 已解决的问题
这个版本没有主要解决的问题。
2.2.7.2. 已知问题
这个版本没有已知的问题。
2.2.8. Migration Toolkit for Containers 1.7.10 发行注记
2.2.8.1. 已解决的问题
此发行版本包括以下已解决的问题:
调整 DVM 中的 rsync 选项
在这个发行版本中,您可以防止在直接卷迁移 (DVM) 过程中使用 Rsync 对绝对符号链接进行操作。以特权模式运行 DVM 会在持久性卷声明 (PVC) 内保留绝对符号链接。要切换到特权模式,在 MigrationController
CR 中,将 migration_rsync_privileged
spec 设置为 true
。(BZ#2204461)
2.2.8.2. 已知问题
这个版本没有已知的问题。
2.2.9. Migration Toolkit for Containers 1.7.9 发行注记
2.2.9.1. 已解决的问题
这个版本没有主要解决的问题。
2.2.9.2. 已知问题
此发行版本有以下已知问题:
调整 DVM 中的 rsync 选项
在这个发行版本中,用户无法防止在直接卷迁移(DVM)期间通过 rsync 操作绝对符号链接。(BZ#2204461)
2.2.10. Migration Toolkit for Containers 1.7.8 发行注记
2.2.10.1. 已解决的问题
此发行版本有以下主要解决的问题:
在 MTC operator 中无法覆盖 Velero 镜像
在以前的版本中,无法使用 MigrationController
自定义资源(CR)中的 velero_image_fqin
参数覆盖 velero 镜像。(BZ#2143389)
当域名有超过 6 个字符时,从 UI 添加一个 MigCluster 会失败
在以前的版本中,当域名有超过 6 个字符时,从 UI 添加一个 MigCluster 会失败。UI 代码预期有两个到六个字符之间的域名。(BZ#2152149)
UI 无法呈现 Migrations' 页面: Cannot read properties of undefined (reading 'name')
在以前的版本中,UI 无法呈现 Migrations' 页面,返回 Cannot read properties of undefined (reading 'name')
。(BZ#2163485)
在 Red Hat OpenShift Container Platform 4.6 集群中创建 DPA 资源失败
在以前的版本中,当在 OpenShift Container Platform 4.6 集群上部署 MTC 时,根据日志创建 DPA 会失败,这会导致一些 pod 缺少。从 OpenShift Container Platform 4.6 集群中的 migration-controller 日志中,这表示传递了一个意外的 null
值,这会导致错误。(BZ#2173742)
2.2.10.2. 已知问题
这个版本没有已知的问题。
2.2.11. Migration Toolkit for Containers 1.7.7 发行注记
2.2.11.1. 已解决的问题
这个版本没有主要解决的问题。
2.2.11.2. 已知问题
这个版本没有已知的问题。
2.2.12. Migration Toolkit for Containers 1.7.6 发行注记
2.2.12.1. 新功能
在 Red Hat OpenShift Container Platform 4.12 中使用 PSA 实现 DVM 支持的建议更改
随着 OpenShift Container Platform 4.12 中的 Pod Security Admission (PSA)的传入强制,默认 pod 会使用 restricted
配置集运行。这个 restricted
配置集意味着要迁移的工作负载将违反此策略,且现在不再可以正常工作。以下功能增强概述了与 OCP 4.12 兼容所需的更改。(MIG-1240)
2.2.12.2. 已解决的问题
此发行版本有以下主要解决的问题:
由于 Red Hat OpenShift Platform 4.12 中缺少 cronjob 错误,则无法创建存储类 Conversion 计划
在以前的版本中,在持久性卷页面中,抛出一个错误,即 CronJob 在版本 batch/v1beta1
中不可用,并在点 cancel 时创建 migplan,其状态为 Not ready
。(BZ#2143628)
2.2.12.3. 已知问题
此发行版本有以下已知问题:
冲突条件会在创建后被清除
在创建会导致冲突错误的新状态迁移计划时,这个错误会在显示后被清除。(BZ#2144299)
2.2.13. Migration Toolkit for Containers 1.7.5 发行注记
2.2.13.1. 已解决的问题
此发行版本包括以下已解决的问题:
直接卷迁移作为源集群上的 rsync pod 失败,进入 Error 状态
在以前的版本中,迁移成功并显示警告,但使用源命名空间中的 rsync pod 进入错误状态的直接卷迁移失败。(*BZ#2132978)
2.2.13.2. 已知问题
这个版本有以下已知问题:
在 MTC operator 中无法覆盖 Velero 镜像
在以前的版本中,无法使用 MigrationController
自定义资源(CR)中的 velero_image_fqin
参数覆盖 velero 镜像。(BZ#2143389)
在 UI 中编辑 MigHook 时,页面可能无法重新加载
如果出现网络连接问题,则 UI 在编辑 hook 时可能无法重新加载。恢复网络连接后,页面将无法重新加载,直到缓存被清除为止。(BZ#2140208)
2.2.14. Migration Toolkit for Containers 1.7.4 发行注记
2.2.14.1. 已解决的问题
这个版本没有主要解决的问题。
2.2.14.2. 已知问题
回滚没有从目标集群中删除某些资源
在从 MTC UI 执行应用程序回滚时,一些资源不会从目标集群中删除,回滚会显示成功的状态。(BZ#2126880)
2.2.15. Migration Toolkit for Containers 1.7.3 发行注记
2.2.15.1. 已解决的问题
此发行版本有以下主要解决的问题:
目标命名空间的正确 DNS 验证
在以前的版本中,如果目标命名空间使用非字母字符启动,则 MigPlan 无法验证。(BZ#2102231)
从 UI 取消选择所有 PVC 仍然会导致尝试的 PVC 传输
在以前的版本中,在进行完整迁移时,取消选择持久性卷声明(PVC)不会跳过选择 PVC,并仍然尝试迁移它们。 (BZ#2106073)
目标命名空间的 DNS 验证不正确
在以前的版本中,MigPlan 无法验证,因为目标命名空间使用非字母字符启动。 (BZ#2102231)
2.2.15.2. 已知问题
这个版本没有已知的问题。
2.2.16. Migration Toolkit for Containers 1.7.2 发行注记
2.2.16.1. 已解决的问题
此发行版本有以下主要解决的问题:
MTC UI 无法正确显示日志
在以前的版本中,MTC UI 没有正确显示日志。(BZ#2062266)
StorageClass 转换计划在 migplan 中添加 migstorage 参考
在以前的版本中,StorageClass 转换计划有一个 migstorage
引用,即使还没有使用它。(BZ#2078459)
下载的日志中缺少 Velero pod 日志
在以前的版本中,当为所有日志下载压缩(.zip)文件夹时,会缺少 velero pod。(BZ#2076599)
UI 下拉菜单中缺少 Velero pod 日志
在以前的版本中,在执行迁移后,velero pod 日志没有包含在下拉列表中提供的日志中。(BZ#2076593)
rsync 选项日志无法在 log-reader pod 中看到
在以前的版本中,当试图在 migrationcontroller
中设置任何有效或无效的 rsync 选项时,log-reader 不会显示有关无效选项或正在使用的 rsync 命令的任何日志。(BZ#2079252)
Velero/Restic 上的默认 CPU 请求过于要求,在某些情况下会失败
在以前的版本中,Velero/Restic 上的默认 CPU 请求过于要求并在某些环境中失败。Velero 和 Restic Pod 的默认 CPU 请求被设置为 500m。这些值非常高。(BZ#2088022)
2.2.16.2. 已知问题
这个版本有以下已知问题:
UI 不遵守将复制存储库更新到不同的存储供应商类型
将复制存储库更新为不同的类型并点 Update Repository 后,它会显示连接成功,但不会使用正确的详情更新 UI。当再次点 Edit 按钮时,它仍然会显示旧的复制存储库信息。
另外,当尝试再次更新复制存储库时,它仍然会显示旧的复制详情。在选择新存储库时,它还会显示您之前输入的所有信息,并且没有启用 Update repository,因为没有提交更改。(BZ#2102020)
迁移失败,因为没有找到备份
因为没有找到初始备份,迁移在恢复阶段失败。(BZ#2104874)
更新 Azure 资源组时不会启用更新 Cluster 按钮
在更新远程集群时,选择 Azure 资源组 复选框,添加资源组不会启用 Update cluster 选项。(BZ#2098594)
删除 migstorage 资源的 UI 中的弹出错误
在 OpenShift Container Platform 中创建 backupStorage
凭证 secret 时,如果从 UI 中删除 migstorage
,则返回 404 错误,且不会删除底层 secret。(BZ#2100828)
MigAnalytic 资源在 UI 中显示资源数为 0
从后端创建 migplan 后,Miganalytic 资源会在 UI 中显示为 0
。(BZ#2102139)
当将两个尾部斜杠添加到公开路由主机到镜像 registry 时,registry 验证会失败
在向公开的 registry 路由中添加两个尾部斜杠(即 //
)后,MigCluster 资源会显示为 已连接
的状态。当使用 DIM 从后端创建 migplan 时,计划将移至 未就绪
状态。(BZ#2104864)
在编辑源集群时,Service Account Token 不可见
在编辑添加并处于 Connected 状态的源集群时,在 UI 中无法看到服务帐户令牌。要保存向导,您必须再次获取令牌,并在字段内提供详情。(BZ#2097668)
2.2.17. Migration Toolkit for Containers 1.7.1 发行注记
2.2.17.1. 已解决的问题
这个版本没有主要解决的问题。
2.2.17.2. 已知问题
这个版本有以下已知问题:
目标命名空间的 DNS 验证不正确
PlanPlan 无法被验证,因为目标命名空间以非字母字符开头。(BZ#2102231)
因为 Velero pod 中缺少标签,迁移控制器中的云传播阶段无法正常工作
因为 Velero pod 中缺少标签,迁移控制器中的 Cloud propagation 阶段无法正常工作。迁移控制器中的 EnsureCloudSecretPropagated
阶段会等待两个端传播复制存储库 secret。因为 Velero pod 缺少该标签,所以该阶段无法正常工作。(BZ#2088026)
在某些环境中进行调度失败时,Velero/Restic 上的默认 CPU 请求过于要求
在某些环境中进行调度失败时,Velero/Restic 上的默认 CPU 请求过于要求。Velero 和 Restic Pod 的默认 CPU 请求被设置为 500m。这些值非常高。可以使用 Velero 和 Restic 的 podConfig
字段在 DPA 中配置资源。迁移 Operator 应该将 CPU 请求设置为较低值,如 100m,以便 Velero 和 Restic pod 可以在资源受限环境中调度,这通常运行。(BZ#2088022)
编辑存储类转换计划后,PersistentVolumeVolumes 页面中会显示警告
编辑存储类转换计划后,persistentVolumes 页面中会显示警告信息。在编辑现有迁移计划时,在 UI 上会显示一个警告,At least one PVC must be selected for Storage Class Conversion
。(BZ#2079549)
下载的日志中缺少 Velero pod 日志
当为所有日志下载压缩(.zip)文件夹时,velero pod 缺失。(BZ#2076599)
UI 下拉菜单中缺少 Velero pod 日志
执行迁移后,velero pod 日志不会包含在下拉列表中提供的日志中。(BZ#2076593)
2.2.18. Migration Toolkit for Containers 1.7.0 发行注记
2.2.18.1. 新功能及功能增强
此发行版本有以下新功能和增强:
- Migration Toolkit for Containers(MTC)Operator 现在依赖于 OpenShift API for Data Protection(OADP)Operator。安装 MTC Operator 时,Operator Lifecycle Manager(OLM)会自动在同一命名空间中安装 OADP Operator。
-
您可以使用
crane tunnel-api
命令在两个集群间建立网络隧道,从位于防火墙后的源集群迁移到基于云的目标集群。 - 在 MTC web 控制台中转换存储类:您可以通过在同一集群中迁移持久性卷(PV)的存储类来转换它。
2.2.18.2. 已知问题
这个版本有以下已知问题:
-
当 AWS gp2 PVC 没有可用空间时,
MigPlan
自定义资源不会显示警告。(BZ#1963927) - 如果目标存储是由 AWS Elastic 文件系统(EFS)动态置备的 PV,则直接和间接数据传输无法正常工作。这是因为 AWS EFS Container Storage Interface(CSI)驱动程序的限制。(BZ#2085097)
- IBM Cloud 的块存储必须位于同一可用区中。请参阅针对虚拟私有云块存储的 IBM 常见问题解答。
-
MTC 1.7.6 无法将支持
v1beta1
cron 作业的源集群迁移到 OpenShift Container Platform 4.12 及更新的版本,不支持v1beta1
cron 作业。(BZ#2149119)