Ceph 对象网关临时 URL 支持

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

此特性添加了对 Ceph 对象网关 (RADOS Gateway) 临时 URL 格式的支持。

问题描述

Ceph 项目是一个强大的分布式存储系统。它包含一个对象存储,并提供与 OpenStack Swift 兼容的 API。Glance 镜像服务可以通过 RADOS Gateway Swift API 使用 Ceph 存储。Ironic 目前不支持使用 Glance 和 RADOS Gateway 的部署配置。原因是临时 URL 的格式不同。RADOS Gateway 与 Glance 前端临时 URL 的第一部分是“endpoint_url/api_version/container/object_id”,其中

  • “endpoint_url” 包含方案、主机名、可选端口和强制的“/swift”后缀。

  • “api_version” 当前为“v1”。

  • “container” 是 Glance 容器的名称。

  • “object_id” 是 Glance 对象 ID。

参数“temp_url_sig”和“temp_url_expires”的计算方式与 Swift 类似,因此完整的 URL 如下所示

https://radosgw.my.host/swift/v1/glance/22aee8e5-cba3-4554-92c4aadde5e38f28? temp_url_sig=e75d1d6facb53d795547b1fc60eca4e8836bd503 &temp_url_expires=1443518434”

“temp_url_sig” 的计算不应在路径中使用“/swift”。

OpenStack Swift 临时 URL 包含额外的 account 参数,即 Glance 用于与 Swift 通信的 account。“swift_account” 参数对于 Ironic 来说是必需的。

注意

不要将 https://docs.ceph.net.cn/docs/master/radosgw/swift/tempurl/ 中的 Python 代码作为参考,因为它至少对于 Firefly 版本来说,无法创建有效的 URL。

提议的变更

一个新的配置参数 temp_url_endpoint_type 将被添加到 glance 组。它可以设置为“swift”或“radosgw”,默认值为“swift”。Ironic 中的镜像服务代码将被更改以支持两种端点(参数设置、RADOS Gateway 的强制后缀)。

备选方案

数据模型影响

状态机影响

REST API 影响

客户端 (CLI) 影响

RPC API 影响

驱动程序 API 影响

Nova 驱动程序影响

Ramdisk 影响

N/A

安全影响

其他最终用户影响

可扩展性影响

性能影响

其他部署者影响

  • 一个新的配置选项 temp_url_endpoint_type 将被添加到 glance 组。

  • 部署者应配置 Glance 使用 RADOS Gateway 后端(通过 Swift API)和 Ceph 存储。

开发人员影响

实现

负责人

主要负责人

yuriyz

工作项

  • 实现 Rados GW 支持。

  • 添加单元测试。

依赖项

测试

将添加单元测试。

升级和向后兼容性

文档影响

将记录 Ironic 与 Rados Gateway 作为 Glance 后端的使用方法。

参考资料