2023.2 项目工作项¶
大多数 Ironic 贡献者拥有大量的职责,包括但不限于,维护所有分支和项目的 CI 工作,回移植错误修复,以及任何下游任务职责,这些职责不包括 Ironic 贡献。
由于在六个月的发布周期内这项工作可能变化很大,我们不会为特定的工作项指定时间表。相反,我们记录了我们希望看到完成的计划项,然后允许社区在时间允许的情况下选择并处理它们。项目列表没有特定顺序。
本文档代表我们对 2023.2 的展望,一旦发布将不会更新。有关正在进行中的项目的最新信息或状态,请参阅 Ironic 白板:https://etherpad.openstack.org/p/IronicWhiteBoard。有关已完成项目的最新信息,请参阅 Ironic 发布说明。
- 表格中的每个项目都包括
工作项名称,链接到描述
- 类别可以是…
维护:保持 Ironic 正常运行必须执行的工作
Bugfix:增强现有代码以覆盖更多边缘情况并解决 bug 的工作
Feature:一个以前不存在的新 Ironic 功能
Champions 是最熟悉相关技术的人员,如果您想实施工作项,他们是一个很好的资源。
名称 |
类别 |
Champions |
|---|---|---|
Bugfix |
JayF, johnthetubaguy, TheJulia |
|
Bugfix |
TheJulia |
|
维护 |
dtantsur |
|
Feature |
TheJulia |
|
Bugfix |
stevebaker |
|
Feature |
Ade Lee |
|
Feature |
TheJulia |
|
Feature |
TheJulia |
|
Feature |
无 |
|
Bugfix |
kaloyank |
|
Feature |
iurygregory, dtantsur, janders |
目标详情¶
Nova Ironic Driver 分片¶
现有 Nova Ironic driver 的故障场景令人沮丧:当实例被配置时,它会永久绑定到配置它的 nova-compute,如果该 compute 宕机则无法管理。此外,在高负载下,由于查询所有 Ironic 节点所需的时间较长,因此存在更多的竞争条件。
上个周期,我们添加了对 Ironic 的支持,允许为节点分配一个分片键,客户端(包括 Nova)可以使用该分片键在服务集群中分割 Ironic 节点管理。
我们希望通过在 openstacksdk 和 python-ironicclient 中实现分片 API 的支持来继续推进此目标。然后,我们将为 Nova 驱动程序和 networking-baremetal 添加分片查询的支持。
移除默认使用 MD5¶
MD5 散列算法仍然在 Ironic 中用于镜像散列。这并非理想情况,因为 MD5 已经被破解。这项工作将是一个破坏性更改;默认禁止使用 MD5 散列。希望继续出于 API 兼容性原因使用 MD5 的操作员可以通过配置重新启用它。
将 Inspector 合并到 Ironic¶
Ironic Inspector 最初是作为 Ironic 外部的服务创建的。现在,它被全球大量的 Ironic 操作员使用,应该与主服务集成。
上个周期,节点库存 API 在 Ironic 中实现。接下来,我们将把 Inspector 的其余功能移动到 Ironic 中。有关更多信息,请参阅相关规范
服务步骤¶
Ironic 使用步骤在部署或清理期间对节点执行操作。我们希望将这个步骤的概念扩展到允许对正在主动部署的节点进行维护。这个新的服务步骤(以前称为“活动步骤”)功能将允许操作员执行固件更新——或对已配置的 ACTIVE 节点执行任何其他自动化操作。
我们还将向 Ironic 中实现一些基本的流程控制步骤。这些命令,例如“hold”和“pause”,将使使用步骤来告知 Ironic 等待外部 API 客户端或配置的时间段后再继续。此外,我们将评估更多硬件和 API 操作以作为步骤公开,例如电源和 BMC 操作。
Conductor 优雅关闭¶
在 Bobcat 周期早期,等待所有锁释放的优雅关闭的初始工作已经完成。接下来,我们将致力于支持在关闭 Conductor 之前耗尽其任务。目标是确保没有正在进行的操作被中断。这将允许真正无中断的 Conductor 关闭和重启。
CI 中的 FIPS 兼容性任务¶
FIPS 兼容性是 OpenStack 中的一个跨项目目标。我们希望添加 CI 任务来识别 Ironic 中不兼容 FIPS 的区域。预计不会出现重大不兼容性,但我们可能需要更新一些 hashlib.md5() 调用和其他小的更改。
跨 Conductor 通信¶
许多在节点上采取的 Conductor 管理操作都是假设单个 Conductor 将执行它们而编写的。这对于可用性和维护场景来说并不好。我们将寻找一种跨 Conductor 通信的形式,以便 Conductor 在关闭时可以移交工作。
有关更多信息,请参阅跨 Conductor rpc 移交规范。
分层节点¶
许多新技术,例如 DPU,正在向硬件集成商呈现更复杂的接口。出现了具有嵌套设备的架构,具有多个固件和多个嵌套操作系统来管理。为了支持这些,我们正在向节点引入父/子关系。有关更多信息,请参阅DPU 管理/编排规范。
改进部署内核/Ramdisk 配置¶
Ironic 目前提供两个地方来轻松管理部署内核和 ramdisk:配置文件,用于全局设置,以及节点元数据用于每节点覆盖。这给希望使用需要不同 ramdisk 的硬件(例如 ARM 和 x86)的运营商带来了问题——他们将不得不为“N”个节点发出“N”个 API 调用来更新其非默认架构 ramdisk。
为了解决这个问题,我们将引入配置以允许为每个架构设置默认 ramdisk。这将允许运营商为 ARM 和 x86 节点设置不同的默认 ramdisk。
IPA 通信¶
Ironic 和 Ironic Python Agent ramdisk 之间的当前通信方法,包括代理令牌以确保安全性,在某些用例中是脆弱的,包括启用了快速通道模式的 neutron 集成部署。
Ironic 贡献者将研究改进通信的方法,目标是改进围绕上述场景等复杂场景的行为。
有关更多信息,请参阅IPA 通信规范。
固件更新¶
Ironic 目前通过在清理或部署中运行的步骤来支持固件更新。但是,这并非理想情况,因为它需要操作员了解才能执行更新。
相反,就像我们为 BIOS 和 RAID 所做的那样,我们将创建一个专用的固件更新接口,这将提供一种标准的升级和管理固件的方式。
有关更多信息,请参阅固件更新规范。
发布计划¶
贡献者在选择要处理的项目时,请记住我们的计划发布。
以下日期仅供参考;请查看https://releases.openstack.org/bobcat/schedule.html 以获取与发布相关的完整时间表,以及https://docs.openstack.org/ironic/latest/contributor/releasing.html 以获取 Ironic 特定的发布信息。如果您想请求错误修复版本,请联系 Ironic 团队。
Bugfix Release 1¶
第一个错误修复版本机会是五月的第一个星期。
Bugfix release 2¶
第二个错误修复版本机会是七月的第一个星期。
Deadline Week¶
8 月 28 日星期一有多个截止日期/冻结:* 必须执行客户端库的最终发布 * 要求冻结 * 软字符串冻结 - Ironic 服务被最小化地翻译;这通常不适用于我们的服务,例如 API 和 Conductor,但可能会通过其他项目影响我们,这些项目被翻译。 * 功能冻结 - Ironic 通常没有功能冻结,但我们可能会受到其他项目的影响,这些项目在此日期确实有功能冻结。
最终 2023.2(集成)发布¶
Ironic 项目的最终发布必须在 2023 年 9 月 29 日之前完成。