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 文档将更新以反映此规范所做的更改。