混合操作系统版本

https://blueprints.launchpad.net/tripleo/+spec/mixed-operating-system-versions

本文档提出一个 TripleO 版本支持多个操作系统版本。

问题描述

历史上,TripleO 的单个分支或版本一次只支持一个操作系统版本。过去,这指的是 Ubuntu 或 Fedora 的特定版本,在早期阶段,现在已经标准化为 CentOS Stream 的特定版本。

为了升级到更高版本的 OpenStack,需要先升级 TripleO undercloud,然后将 TripleO overcloud 升级到更高版本的 OpenStack。仅支持一个操作系统版本的问题在于,这样的 OpenStack 升级通常意味着同时升级操作系统。将 OpenStack 升级与同时的操作系统升级结合起来存在问题,因为

  1. 升级复杂性

  2. 升级时间导致维护窗口延长

  3. 操作系统与正在运行的工作负载不兼容(内核、libvirt、KVM、qemu、OVS/OVN 等)。

  4. 操作系统更改对用户的影响(docker vs. podman,network-scripts vs. NetworkManager 等)。

提议的变更

概述

本文档提出一个 TripleO 版本支持 2 个主要版本的操作系统,特别是 CentOS Stream。一个 TripleO 版本支持两个主要版本的 CentOS Stream,可以在保持相同操作系统版本的同时进行 OpenStack 升级。

在 OpenStack 升级过程中存在多个软件版本

TripleO:

TripleO 版本是安装在 undercloud 上的 TripleO 相关软件包的版本。虽然这里使用了其他一些 OpenStack 软件版本(Ironic、Neutron 等),但为了本文档的目的,undercloud 上的所有 TripleO 和 OpenStack 软件都将被称为 TripleO 版本。TripleO 版本对应于一个 OpenStack 版本。示例:Train、Wallaby、Zed。

OpenStack:

OpenStack 版本是 TripleO undercloud 管理的 overcloud 上的 OpenStack 版本。示例:Train、Wallaby、Zed。

操作系统:

操作系统版本是 CentOS Stream 的版本。undercloud 和 overcloud 都有操作系统版本。undercloud 和 overcloud 可能没有相同的操作系统版本,并且 overcloud 中的所有节点可能没有相同的操作系统版本。示例:CentOS Stream 8、9、10

容器镜像:

容器镜像版本是 tcib 使用的基础容器镜像的版本。这是 Red Hat 通用基础镜像 (UBI) 的一个版本。示例:UBI 8、9、10

为了本文档的目的,讨论的操作系统版本将是 CentOS Stream 8 和 9,而 OpenStack 版本将是 Train 和 Wallaby。然而,期望 TripleO 在每个后续版本中继续支持 2 个操作系统版本。随后,TripleO 的 Zed 版本将支持 CentOS Stream 9 和 10。

考虑到上述版本定义和考虑因素,由 TripleO 管理的从 Train 到 Wallaby 的升级将描述如下

  1. 将 undercloud 操作系统版本从 CentOS Stream 8 升级到 9。

  2. 将 undercloud TripleO 版本从 Train 升级到 Wallaby。

    1. Wallaby 版本的 TripleO undercloud 将仅在 CentOS Stream 9 上运行。

    2. 意味着将 undercloud 上的所有 TripleO 和 OpenStack 软件升级到 Wallaby。

  3. 将 overcloud 上的 OpenStack 版本从 Train 升级到 Wallaby

    1. 不意味着将操作系统版本从 CentOS Stream 8 升级到 9。

    2. 意味着升级到新的容器镜像版本,这些版本是 OpenStack Wallaby 的镜像。这些容器镜像版本可能因服务而异。某些服务可能使用 UBI 版本 9,而某些服务可能仍然使用 UBI 版本 8。

  4. 将 overcloud 节点上的操作系统版本从 CentOS Stream 8 升级到 9。

    1. 可以逐个节点进行,并考虑到可能包括所有控制平面节点需要同时升级的给定约束。

    2. 数据平面节点可以有选择地升级。

默认行为将是用户和操作员可以选择单独升级到 CentOS Stream 9,与 OpenStack 升级分开。对于希望结合 OpenStack 和操作系统升级以匹配以前的 FFU 行为的操作员,他们可以连续执行这两个升级。OpenStack 和操作系统升级将是单独的过程。可能存在 UX 使得这些过程看起来像一个过程,但这不在本文档的规定范围内。

新的 TripleO 部署可以选择 CentOS Stream 8 或 9 作为其 Overcloud 操作系统版本。

这种变化意味着 TripleO 软件需要知道如何在不同的操作系统版本上管理 OpenStack。Ansible 角色、puppet 模块、shell 脚本等,都需要删除对给定操作系统的任何假设,并开发为管理 CentOS Stream 8 和 9。这包括操作系统实用程序,这些实用程序的功能可能因底层版本而异,例如 podman 和 container-tools。

在 TripleO 的 Zed 版本之前,无法停止对 CentOS Stream 8 的支持,此时将需要对 CentOS Stream 9 和 10 提供支持。

替代方案

替代方案 1:

TripleO undercloud Wallaby 版本可以在 CentOS Stream 8 和 9 上运行。支持两者似乎没有太多好处。一些用户可能会拒绝在他们的环境中引入 9,但 TripleO 过去没有遇到类似的阻力。

替代方案 2:

在将 overcloud 升级到 OpenStack Wallaby 版本时,可能需要所有控制平面节点也进行操作系统升级。从表面上看,这似乎可以减少开发和测试矩阵的复杂性。但是,考虑到可组合角色的性质,这种要求实际上需要针对每个服务进行规定,而不是针对每个角色。强制执行这样的要求将有问题,因为它可以灵活地在任何角色上运行任何服务。相反,最好让 TripleO 记录哪些角色需要升级到较新的操作系统版本,方法是记录一组已经提供的角色或服务。例如,运行 pacemaker 管理服务的任何节点都需要同时升级到相同的操作系统版本。

替代方案 3:

可以为 OpenStack Wallaby 的所有内容使用单个容器镜像版本。为了支持在 CentOS Stream 8 和 9 上运行这些容器,单个 UBI 容器镜像可能需要是 8,因为预计的支持声明可能会禁止在 8 上运行 UBI 9 镜像。

替代方案 4:

可以强制新的部署仅将 CentOS Stream 9 用于其 overcloud 操作系统版本。但是,一些用户可能由于技术或认证要求而需要 CentOS Stream 8 的工作负载。

安全影响

无。

升级影响

本提案旨在通过分离 OpenStack 和操作系统升级来改进 FFU 流程。

大多数用户和操作员将欢迎这一变化。有些人可能更喜欢旧方法,该方法提供了一种更同步和交织的升级方式。虽然可以通过某种方式实现新的流程,以提供类似同步的体验,但它仍然会不同,并且可能看起来像是两个不同的步骤。

不同的步骤应该可以简化升级过程。

其他最终用户影响

无。

性能影响

以前的 FFU 实现将 OpenStack 和操作系统升级交织在一起。随着升级流程的分离,OpenStack 和操作系统的整体升级可能需要更长的时间。操作员需要在仍然希望在同一窗口内升级两者的情况下,计划更长的维护窗口。

否则,操作员可以选择先升级 OpenStack,然后在稍后的日期升级操作系统,从而获得多个但更短的维护窗口。

其他部署者影响

无。

开发人员影响

TripleO 开发人员需要支持管理跨多个操作系统版本的 OpenStack 软件。

负责 TripleO 集成的服务开发人员需要决定围绕其单个服务在容器镜像版本和支持不同操作系统版本方面升级要求。

鉴于 CentOS Stream 9 支持在 TripleO 中的推出方式与支持 8 重叠,在很大程度上,TripleO Wallaby 已经支持 8 和 9。存在测试 Wallaby 在 8 和 9 上运行的 CI 作业。今后,需要保持这种状态。

实现

负责人

主要负责人

<launchpad-id 或 None>

其他贡献者

<launchpad-id 或 None>

工作项

  1. tripleo-ansible - CentOS Stream 8 和 9 支持

  2. tripleo-heat-templates - CentOS Stream 8 和 9 支持

  3. puppet-tripleo - CentOS Stream 8 和 9 支持

  4. puppet-* - CentOS Stream 8 和 9 支持

  5. tcib - 构建每个服务的正确容器镜像版本

依赖项

  • 需要 CentOS Stream 9 构建才能进行全面测试和开发

测试

FFU 通常不在上游 CI 中进行测试。但是,需要 CI 来测试在 CentOS Stream 8 和 9 上部署 OpenStack Wallaby,以验证 TripleO Wallaby 与这两个操作系统版本兼容。

文档影响

支持的版本矩阵需要在 tripleo-docs 中记录。

参考资料

无。