iPXE 使用 Swift 临时 URL

https://bugs.launchpad.net/ironic/+bug/1526404

此特性增加了对在 iPXE 启动时为部署 ramdisk 和内核生成 Swift 临时 URL 的支持。

问题描述

目前,iPXE 驱动程序需要一个外部 HTTP 服务器来提供部署 ramdisk 和内核。在使用 Glance 时,ironic-conductor 从 Glance 获取镜像并将其放置在 HTTP 根目录下。如果哈希权发生变化,新的 ironic-conductor 接管节点时,也必须执行相同的操作,即获取镜像并在本地缓存以管理该节点。

在使用 Swift 后端的情况下,不应该需要外部 HTTP 服务器。使用 Swift,我们可以生成临时 URL,这些 URL 可以传递给 iPXE 以下载镜像,而无需凭据。

提议的变更

建议的实现方式是让 iPXE 驱动程序为部署 ramdisk 和内核创建一个 Swift tempurl [0],节点将在配置生成过程中启动这些 ramdisk 和内核。

同时,建议在 pxe 组下添加一个名为 ipxe_use_swift 的布尔型配置选项。如果为 True,这将指示 iPXE 不要将镜像缓存在磁盘上,并为 ramdisk 和内核生成 Swift tempurl。如果为 False,iPXE 将继续将镜像缓存在 HTTP 根目录下。默认值为 False。

请注意,为了保持与 Nova 行为的兼容性,如果需要 netboot,用户镜像的内核/ramdisk 仍然必须缓存。否则,当 tempurl 过期或镜像从 Glance 中完全删除时,用户将无法从内部重新启动实例。

备选方案

继续使用外部 HTTP 服务器并在磁盘上缓存镜像。

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

Ramdisk 影响

N/A

安全影响

由于 Swift 临时 URL 具有到期时间,并且外部 HTTP 服务器中的镜像将可用直到实例被销毁,因此具有积极的安全影响。

其他最终用户影响

可扩展性影响

由于可以通过添加新节点水平扩展 Swift 集群,因此直接从 Swift 下载具有可扩展性优势。

性能影响

其他部署者影响

开发人员影响

实现

负责人

主要负责人

lucasagomes <lucasagomes@gmail.com>

其他贡献者

pshchelo <shchelokovskyy@gmail.com>

工作项

  • pxe 组下添加新的 ipxe_use_swift 配置选项。

  • ipxe_use_swift 为 True 时,在配置生成过程中让 PXE 驱动程序生成 Swift 临时 URL。

  • ipxe_use_swift 为 True 时,跳过将镜像缓存在磁盘上。

依赖项

测试

将添加单元测试。

升级和向后兼容性

文档影响

iPXE 文档将更新以反映此规范所做的更改。

参考资料