容器迁移工具包 (MTC) 的发行说明描述了新功能和增强功能、已弃用的功能以及已知问题。
MTC 允许您以命名空间为粒度在 OpenShift Container Platform 集群之间迁移应用程序工作负载。
您可以从OpenShift Container Platform 3 迁移到 4.17,以及在 OpenShift Container Platform 4 集群之间迁移。
MTC 提供了一个基于 Kubernetes 自定义资源的 Web 控制台和 API,以帮助您控制迁移并最大限度地减少应用程序停机时间。
有关 MTC 支持策略的信息,请参阅OpenShift 应用程序和集群迁移解决方案,它是Red Hat OpenShift Container Platform 生命周期策略的一部分。
容器迁移工具包 (MTC) 1.7.17 是仅限容器等级 (CGO) 版本,发布目的是刷新容器的健康等级,与 MTC 1.7.16 相比,产品本身没有任何代码更改。
此版本解决了以下问题:
net/http
:Request.ParseMultipartForm
方法中的内存耗尽在 net/http
Golang 标准库包中发现了一个缺陷,它会影响早期版本的 MTC。解析 multipart
表单时(无论是使用 Request.ParseMultipartForm
显式解析,还是使用 Request.FormValue
、Request.PostFormValue
或 Request.FormFile
方法隐式解析),对已解析表单的总大小的限制不会应用于读取单个表单行时消耗的内存。这允许恶意制作的输入包含长行,从而导致分配任意大量的内存,可能导致内存耗尽。
要解决此问题,请升级到 MTC 1.7.16。
更多详细信息,请参阅CVE-2023-45290
crypto/x509
:对具有未知公钥算法的证书进行验证时出现恐慌在 crypto/x509
Golang 标准库包中发现了一个缺陷,它会影响早期版本的 MTC。验证包含具有未知公钥算法的证书的证书链会导致 Certificate.Verify
出现恐慌。这会影响所有将 Config.ClientAuth
设置为 VerifyClientCertIfGiven
或 RequireAndVerifyClientCert
的 crypto/tls
客户端和服务器。默认行为是 TLS 服务器不验证客户端证书。
要解决此问题,请升级到 MTC 1.7.16。
更多详细信息,请参阅CVE-2024-24783。
net/mail
:显示名称中的注释处理不正确在 net/mail
Golang 标准库包中发现了一个缺陷,它会影响早期版本的 MTC。ParseAddressList
函数处理注释、括号中的文本和显示名称的方式不正确。由于这与符合标准的地址解析器不一致,因此使用不同解析器的程序可能会做出不同的信任决策。
要解决此问题,请升级到 MTC 1.7.16。
更多详细信息,请参阅CVE-2024-24784。
html/template
:从 MarshalJSON
方法返回的错误可能会破坏模板转义在 html/template
Golang 标准库包中发现了一个缺陷,它会影响早期版本的 MTC。如果从 MarshalJSON
方法返回的错误包含用户控制的数据,则它们可用于破坏 html/template
包的上下文自动转义行为,从而允许后续操作将意外内容注入模板。
要解决此问题,请升级到 MTC 1.7.16。
更多详细信息,请参阅CVE-2024-24785。
webpack-dev-middleware
:缺乏 URL 验证可能导致文件泄露在 webpack-dev-middleware
包中发现了一个缺陷,它会影响早期版本的 MTC。此缺陷在返回本地文件之前未能充分验证提供的 URL 地址,这可能允许攻击者创建 URL 以从开发人员的机器返回任意本地文件。
要解决此问题,请升级到 MTC 1.7.16。
更多详细信息,请参阅CVE-2024-29180。
envoy
:由于 CONTINUATION 帧泛滥导致 HTTP/2 CPU 耗尽在 envoy
代理实现 HTTP/2 编解码器的方式中发现了一个缺陷,它会影响早期版本的 MTC。对可以在单个流中发送的 CONTINUATION
帧的数量施加的限制不足,即使在超过 envoy
的报头映射限制之后也是如此。此缺陷可能允许未经身份验证的远程攻击者向易受攻击的服务器发送数据包。这些数据包可能会消耗计算资源并导致拒绝服务 (DoS)。
要解决此问题,请升级到 MTC 1.7.16。
更多详细信息,请参阅CVE-2024-30255。
此版本存在以下已知问题:
错误
状态迁移任何具有持久卷声明 (PVC) 的应用程序时,阶段
迁移操作会成功并发出警告,但直接卷迁移 (DVM) 失败,源命名空间上的 rsync
pod 进入 错误
状态。(BZ#2256141)
创建返回冲突错误消息的新状态迁移计划时,错误消息会在显示后很快被清除。(BZ#2144299)
当集群中存在多个具有不同提供商类型的卷快照位置 (VSL),但您未将任何一个设置为默认 VSL 时,Velero 会导致验证错误,从而导致迁移操作失败。(BZ#2180565)
此版本解决了以下问题:
在 protojson.Unmarshal
函数中发现了一个缺陷,在解组某些形式的无效 JSON 消息时,该函数可能会进入无限循环。当解组到包含 google.protobuf.Any
值的消息中,或者在 JSON 格式的消息中设置了 UnmarshalOptions.DiscardUnknown
选项时,可能会发生这种情况。
要解决此问题,请升级到 MTC 1.7.15。
更多详细信息,请参阅(CVE-2024-24786)。
jose-go
对高度压缩数据的处理不当由于对高度压缩数据的处理不当,在 Jose 中发现了一个漏洞。攻击者可以发送包含压缩数据的 JSON Web Encryption (JWE) 加密消息,这些数据在由 Decrypt
或 DecryptMulti
函数解压缩时会使用大量的内存和 CPU。
要解决此问题,请升级到 MTC 1.7.15。
更多详细信息,请参阅(CVE-2024-28180)。
此版本存在以下已知问题:
错误
状态迁移任何具有持久卷声明 (PVC) 的应用程序时,阶段
迁移操作会成功并发出警告,但直接卷迁移 (DVM) 失败,源命名空间上的 rsync
pod 进入 错误
状态。(BZ#2256141)
创建新的状态迁移计划时,如果导致冲突错误消息,则该错误消息显示后不久就会清除。(BZ#2144299)
如果集群中有多个不同提供程序类型的 VSL,并且您未将它们中的任何一个设置为默认 VSL,则 Velero 将导致验证错误,从而导致迁移操作失败。(BZ#2180565)
此版本解决了以下问题:
在容器迁移工具包 (MTC) 使用的 HTTP/2 协议中处理多路复用流的过程中发现了一个漏洞。客户端可以重复请求新的多路复用流,然后立即发送RST_STREAM
帧以取消这些请求。此活动在设置和拆除流方面为服务器创建了额外的负载,但避免了服务器端对每个连接上的最大活动流数的任何限制。结果,由于服务器资源消耗,导致拒绝服务攻击。
要解决此问题,请升级到 MTC 1.7.14。
有关更多详细信息,请参阅 (CVE-2023-44487) 和 (CVE-2023-39325)。
(CVE-2023-39318):在 MTC 使用的 Golang 中发现了一个漏洞。html/template
包未正确处理 HTML 式的""
注释标记或"#!"
注释标记(在<script>
上下文中)。此漏洞可能导致模板解析器错误地解释<script>
上下文的内容,从而导致操作转义不正确。
(CVE-2023-39319):在 MTC 使用的 Golang 中发现了一个漏洞。html/template
包未应用正确的规则来处理"<script"
、"<!--"
和"</script"
在<script>
上下文中的 JavaScript 文字中的出现。这可能导致模板解析器错误地认为脚本上下文过早终止,从而导致操作转义不正确。
(CVE-2023-39321):在 MTC 使用的 Golang 中发现了一个漏洞。处理 QUIC 连接的不完整后握手消息可能会导致 panic。
(CVE-2023-39322):在 MTC 使用的 Golang 中发现了一个漏洞。使用 QUIC 传输协议的连接未设置读取后握手消息时缓冲的数据量上限,允许恶意 QUIC 连接导致无限制的内存增长。
要解决这些问题,请升级到 MTC 1.7.14。
有关更多详细信息,请参阅 (CVE-2023-39318)、(CVE-2023-39319) 和 (CVE-2023-39321)。
此版本存在以下已知问题:
在**迁移详细信息**页面上,首先会显示迁移详细信息
,没有任何问题。但是,一段时间后,详细信息会消失,并返回504
错误。(BZ#2231106)
将容器迁移工具包 (MTC) 运算符从 1.7.x 升级到 1.8.x 后,不会删除旧的 restic pod。升级后,restic 和 node-agent pod 都在命名空间中可见。(BZ#2236829)
此版本包含以下主要已解决的问题
在此版本中,您可以防止在直接卷迁移 (DVM) 过程中 Rsync 操纵绝对符号链接。在特权模式下运行 DVM 会保留持久卷声明 (PVC) 内的绝对符号链接。要切换到特权模式,请在MigrationController
CR 中将migration_rsync_privileged
规范设置为true
。(BZ#2204461)
此版本包含以下主要已解决的问题
在以前的版本中,无法使用MigrationController
自定义资源 (CR) 中的velero_image_fqin
参数覆盖 velero 镜像。(BZ#2143389)
在之前的版本中,当域名超过六个字符时,通过UI添加MigCluster会失败。UI代码预期域名长度在两到六个字符之间。(BZ#2152149)
在之前的版本中,UI无法渲染“迁移”页面,返回错误代码Cannot read properties of undefined (reading 'name')
。(BZ#2163485)
在之前的版本中,在OpenShift Container Platform 4.6集群上部署MTC时,根据日志,DPA创建失败,导致一些Pod缺失。OpenShift Container Platform 4.6集群中migration-controller的日志表明,传递了一个意外的null
值,导致了错误。(BZ#2173742)
随着OpenShift Container Platform 4.12中Pod安全准入(PSA)的强制执行,默认Pod将以restricted
配置文件运行。这个restricted
配置文件意味着要迁移的工作负载将违反此策略,并且从现在开始将不再工作。以下增强功能概述了为保持与OCP 4.12兼容所需进行的更改。(MIG-1240)
此版本包含以下主要已解决的问题
在之前的版本中,在持久卷页面上,会抛出一个错误,指出在batch/v1beta1
版本中CronJob不可用,并且单击取消后,migplan将创建并状态为Not ready
。(BZ#2143628)
此版本包含以下主要已解决的问题
在之前的版本中,迁移成功但带有警告,但直接卷迁移失败,源命名空间上的rsync pod进入错误状态。(BZ#2132978)
此版本存在以下已知问题:
在以前的版本中,无法使用MigrationController
自定义资源 (CR) 中的velero_image_fqin
参数覆盖 velero 镜像。(BZ#2143389)
如果存在网络连接问题,则在编辑hook时,UI可能无法重新加载。网络连接恢复后,页面将无法重新加载,直到缓存被清除。(BZ#2140208)
在执行容器迁移工具包(MTC)UI的应用程序回滚时,某些资源未从目标集群中删除,回滚显示状态为成功完成。(BZ#2126880)
此版本包含以下主要已解决的问题
在之前的版本中,如果目标命名空间以非字母字符开头,则无法验证MigPlan。(BZ#2102231)
在之前的版本中,在执行完全迁移时,取消选择持久卷声明(PVC)不会跳过选择PVC,仍然会尝试迁移它们。(BZ#2106073)
在之前的版本中,由于目标命名空间以非字母字符开头,因此无法验证MigPlan。(BZ#2102231)
此版本包含以下主要已解决的问题
在之前的版本中,容器迁移工具包(MTC)UI无法正确显示日志。(BZ#2062266)
在之前的版本中,即使没有使用,存储类转换计划也具有migstorage
引用。(BZ#2078459)
在之前的版本中,下载所有日志的压缩(.zip)文件夹时,缺少velero pod。(BZ#2076599)
在之前的版本中,执行迁移后,下拉列表中提供的日志中不包含velero pod日志。(BZ#2076593)
在之前的版本中,当尝试在migrationcontroller
中设置任何有效或无效的rsync选项时,log-reader不会显示任何关于无效选项或关于正在使用的rsync命令的日志。(BZ#2079252)
在之前的版本中,Velero/Restic的默认CPU请求过高,在某些环境中会失败。Velero和Restic Pod的默认CPU请求设置为500m。这些值过高。(BZ#2088022)
此版本存在以下已知问题:
将复制存储库更新到不同的类型并单击“更新存储库”后,它会显示连接成功,但UI不会使用正确的详细信息更新。再次单击“编辑”按钮时,它仍然显示旧的复制存储库信息。
此外,当尝试再次更新复制存储库时,它仍然显示旧的复制详细信息。选择新的存储库时,它还会显示您之前输入的所有信息,并且“更新存储库”未启用,就好像没有要提交的更改一样。(BZ#2102020)
迁移在还原阶段失败,因为找不到初始备份。(BZ#2104874)
更新远程集群时,选中**Azure 资源组**复选框并添加资源组不会启用**更新集群**选项。(BZ#2098594)
在 OpenShift Container Platform 中创建backupStorage
凭据密钥时,如果从 UI 中删除migstorage
,则会返回 404 错误,并且底层密钥不会被删除。(BZ#2100828)
从后端创建 migplan 后,Miganalytic 资源在 UI 中显示资源计数为0
。(BZ#2102139)
在公开的注册表路由中添加两个尾部斜杠(即//
)后,MigCluster 资源的状态显示为已连接
。当使用 DIM 从后端创建 migplan 时,计划将变为未就绪
状态。(BZ#2104864)
在 UI 中编辑已添加并处于**已连接**状态的源集群时,服务帐户令牌在字段中不可见。要保存向导,必须再次获取令牌并在字段中提供详细信息。(BZ#2097668)
此版本存在以下已知问题:
由于目标命名空间以非字母字符开头,因此无法验证 MigPlan。(BZ#2102231)
由于 Velero Pod 上缺少标签,迁移控制器的云传播阶段无法正常工作。迁移控制器中的EnsureCloudSecretPropagated
阶段将等待直到复制存储库密钥在两侧都传播。由于 Velero Pod 上缺少此标签,因此该阶段无法按预期工作。(BZ#2088026)
Velero/Restic 的默认 CPU 请求过高,导致某些环境中调度失败。Velero 和 Restic Pod 的默认 CPU 请求设置为 500m。这些值过高。可以使用 DPA 中的podConfig
字段配置 Velero 和 Restic 的资源。迁移操作符应将 CPU 请求设置为较低的值,例如 100m,以便在资源受限的环境中调度 Velero 和 Restic Pod,容器迁移工具包 (MTC) 通常在这些环境中运行。(BZ#2088022)
编辑存储类转换计划后,在**persistentVolumes**页面上显示警告。编辑现有迁移计划时,UI 上会显示警告必须至少选择一个 PVC 用于存储类转换
。(BZ#2079549)
下载所有日志的压缩(.zip)文件夹时,缺少 velero pod。(BZ#2076599)
执行迁移后,下拉列表中提供的日志中不包含 velero pod 日志。(BZ#2076593)
此版本包含以下新功能和增强功能:
容器迁移工具包 (MTC) 运算符现在依赖于用于数据保护的 OpenShift API (OADP) 运算符。安装 MTC 运算符时,运算符生命周期管理器 (OLM) 会自动在同一命名空间中安装 OADP 运算符。
您可以通过使用crane tunnel-api
命令在两个集群之间建立网络隧道,将数据从位于防火墙后的源集群迁移到基于云的目标集群。
在 MTC Web 控制台中转换存储类:您可以通过在同一集群内迁移持久卷 (PV) 来转换其存储类。
此版本存在以下已知问题:
当 AWS gp2 PVC 没有可用空间时,MigPlan
自定义资源不会显示警告。(BZ#1963927)
如果目标存储是由 AWS Elastic File System (EFS) 动态配置的 PV,则直接和间接数据传输将无法工作。这是由于 AWS EFS 容器存储接口 (CSI) 驱动程序的限制。(BZ#2085097)
IBM Cloud 的块存储必须位于同一可用区。请参阅IBM 关于虚拟私有云块存储的常见问题解答。
MTC 1.7.6 无法将支持v1beta1
cron 作业的源集群中的 cron 作业迁移到不支持v1beta1
cron 作业的 OpenShift Container Platform 4.12 及更高版本的集群。(BZ#2149119)