Newton 系列发布说明

13.0.0

序言

  • vhdx 添加到支持的磁盘格式列表中。

  • Glance API minor 版本提升至 2.4。

  • 弃用 show_multiple_locations 配置选项,转而使用现有的基于角色的访问控制 (RBAC) 来管理镜像位置,该控制使用 policy.json 文件来定义适当的规则。

  • Images (Glance) 1 API 已被弃用。请参阅弃用部分了解更多信息。

  • 改进了配置选项的描述和处理。

  • 不再允许将位置添加到非活动或非排队的镜像。

  • 当将 4 字节 Unicode 字符传递到 metadefs API 时,Glance 不再返回 500 错误。

  • 弃用了镜像签名的“sign-the-hash”方法。旧的 run_tests 和相关脚本已被删除。

  • 数据库降级功能已从 Glance 源代码树中删除。

  • 已删除 s3 存储驱动程序。

  • Glance 源代码中附带的示例配置文件现在对存储驱动程序配置选项进行了重新排序,以便将来保持一致的排序。

  • 已删除过期的任务。

新特性

  • 已将标识符 vhdx 添加到 Glance 中支持的磁盘格式列表中。相应的配置选项已更新,默认列表显示 vhdx 作为受支持的格式。

升级说明

  • 为 CPU 线程固定策略添加了额外的元数据到 ‘compute-cpu-pinning.json’。使用 glance_manage 工具进行升级。

  • 配置选项 disk_format 默认启用 vhdx 支持。

  • policy.json 中的 default 策略现在使用 admin 角色,而不是任何角色。这是为了使策略文件更具限制性而不是宽松性,并加强安全性。

  • Glance API CURRENT minor 版本现在是 2.4

    • 为了部分修复重要的镜像位置错误 1587985,一个影响 API 的更改已被合并到 Glance 中。

    • 这将在 Newton 发布前后导致非向后兼容的体验,对于使用 add 功能向镜像位置添加位置的用户。

  • 一些后端存储名称在 glance 和 glance_store 之间不一致。这意味着 VMware datastore 或文件系统存储的操作员需要使用 glance-api.conf 中与 glance_store 中的任何有效标识符不对应的存储名称。由于这种情况鼓励错误配置和操作员的不满,我们在 Newton 版本中使存储名称保持一致。这对您的影响

    • 此更改仅适用于使用多个镜像位置的操作员

    • 此更改仅适用于使用 VMware datastore 或文件系统存储的操作员

    • 此更改仅适用于 store_type_preference 选项

    • VMware datastore 操作员:旧名称,现在 DEPRECATED,是 vmware_datastore名称,在 glance 和 glance_store 中使用,是 vmware

    • 文件系统存储操作员:旧名称,现在 DEPRECATED,是 filesystem名称,在 glance 和 glance_store 中使用,是 file

    • 此更改是向后兼容的,也就是说,在弃用期间代码将识别旧名称。对已弃用名称的支持将在 Pike 版本中删除

    • 我们强烈建议操作员立即修改他们的 glance-api.conf 文件以使用名称

  • 关于 show_multiple_locations 配置选项弃用的一些补充说明。

    • 为开发人员和操作员维护两种不同的配置、启用和/或禁用功能的方式很困难,因此在 Ocata 版本中将消除控制此功能的较不精细的方式。

    • 对于 Newton 版本,此选项仍将被保留。但是,重要的是要更新 glance-api 节点的 policy.json 文件。特别是,请考虑根据您的要求更新策略 delete_image_locationget_image_locationset_image_location。由于这是一个高级选项并且容易暴露一些风险,请检查策略以确保云的安全性和隐私。

    • 未来的版本将忽略此选项并仅遵循策略规则。建议禁用此选项以用于公共端点,仅在服务到服务通信中内部使用。

    • 正如上面提到的,相同的建议也适用于基于策略的配置,用于暴露多个镜像位置。

  • 镜像签名验证功能已更新为遵循“sign-the-data”方法,该方法直接使用镜像数据的签名。以前弃用的“sign-the-hash”方法,该方法使用镜像数据的 MD5 哈希的签名,已被删除。

  • 已从 glance-manage 工具和所有数据库降级脚本中删除了 db_downgrade 命令。根据 OpenStack 策略,Glance 不再可以降级。建议操作员在尝试任何升级之前对生产数据进行完整的数据库备份。

  • 最新版本的 glance_store 库不支持 s3 驱动程序。库中已删除相同的所有代码引用。由于此版本的 Glance 使用更新的 glance_store 库,您将发现 Glance 中也删除了 s3 驱动程序支持。例如,Glance 镜像位置策略模块不再提供 s3 驱动程序支持。

弃用说明

  • 在 Newton 版本中弃用 Images (Glance) 版本 1 API 后,它将在 Pike 版本或之后被删除。与 Images (Glance) v1 API 相关的配置选项也已被弃用,并可能被删除。间接相关的配置选项 enable_v2_api 也已被弃用,因为它在删除 Images (Glance) v1 API 后变得多余。已为弃用的配置选项设置了适当的警告消息,并在启用 (正在使用) Images (Glance) v1 API 时。建议操作员部署 Images (Glance) v2 API。将遵循标准的 OpenStack 弃用策略进行删除。

关键问题

  • 尝试将镜像位置设置为处于 activequeued 状态的镜像,现在将向用户返回 HTTP 冲突 (HTTP 状态码 409)。

    • 到目前为止,在添加位置时没有进行镜像状态检查。在某些情况下,这可能会导致糟糕的用户体验。它也可能对评估 deactivated 状态下镜像状况的安全团队造成问题。

    • 不允许在以下镜像状态下添加位置 - savingdeactivateddeletedpending_deletekilled

    • 请注意,将位置添加到 activequeuedsavingdeactivated 状态的镜像时存在竞争条件。由于这些是非终止镜像状态,因此可能在用户尝试添加位置时发生状态转换,从而阻止添加(或可能允许不应允许的添加)。

    • 例如,不允许将位置添加到 saving 状态的镜像。假设用户决定无论如何添加一个位置。有可能在处理用户请求之前,正在保存的数据的传输完成并将镜像转换为 active 状态,在这种情况下,用户的添加位置请求将成功。但是,对于用户而言,此成功将显得异常,因为在大多数情况下,尝试将位置添加到 saving 状态的镜像会失败。

    • 我们提到这一点是为了让您在自己的测试中了解这种情况。

安全问题

  • 所有 qemu-img info 调用现在都在资源限制下运行,这些限制将运行该命令的进程的 CPU 时间和地址空间使用量分别限制为 2 秒和 1 GB。 这解决了 bug https://bugs.launchpad.net/glance/+bug/1449062。 目前“qemu-img”的使用仅限于 Glance 任务,这些任务默认情况下(自 Mitaka 版本发布以来)仅对管理员用户可用。 我们继续建议仅将任务暴露给受信任的用户

  • Glance 中镜像签名验证功能的初始实现是不安全的,因为它依赖于镜像数据的 MD5 哈希。更多详细信息可以在 bug 1516031 中找到。这种“sign-the-hash”方法在 Mitaka 中被弃用,并在 Newton 中删除。相关的 CVE-2015-8234。

错误修复

  • 以下是已修复(或部分修复)的其他重要错误的列表及其描述。

    • bug 1617258: 镜像签名 base64 需要换行

    • bug 1612341: 添加 cpu 线程固定 flavor metadef

    • bug 1609571: 版本协商 api 中间件未更新为包含 v2.3

    • bug 1602081: Glance 需要使用 oslo.context 的策略字典

    • bug 1599169: glance-replicator size 在没有提供参数时引发对象类型 ‘NoneType’ 没有 len() 异常

    • bug 1599192: glance-replicator 需要显示可读大小

    • bug 1585917: member-create 如果 member-id 大于 255 个字符,将引发 500 错误

    • bug 1598985: glance-replicator 比较输出应显示镜像名称,而不仅仅是镜像 ID,以用于缺失的镜像

    • bug 1533949: Glance 任务缺少配置项“conversion_format”

    • bug 1593177: 默认策略需要是 admin,以便更安全地进行默认部署场景

    • bug 1584076: Swift ACL 在 v1 Glance 镜像中消失

    • bug 1591004: 无法下载没有校验和的镜像,并且启用了缓存

    • bug 1584415: 使用 created_at 和 updated_at 过滤器列出镜像,如果未指定操作员,则会失败

    • bug 1590608: 服务应使用来自 oslo.middleware 库的 http_proxy_to_wsgi 中间件

    • bug 1584350: etc/glance-registry.conf 示例文件具有冗余的存储部分

    • bug 1543937: db-purge 对于非常大的数字失败

    • bug 1580848: 在没有属性的情况下创建导入任务时没有异常

    • bug 1585584: Glare v0.1 无法创建公共工件草稿

    • bug 1582304: 允许在设置 http 代理时运行测试

    • bug 1570789: Metadefs API 在传递 4 字节 Unicode 字符时返回 500 错误

    • bug 1532243: glance 在无法加载任务流时会静默失败

    • bug 1568894: glance_store 选项缺失在 glance-scrubber.conf 和 glance-cache.conf 示例文件中

    • bug 1568723: secure_proxy_ssl_header 不在示例配置文件中

    • bug 1535231: md-meta 使用不区分大小写的字符串时存在问题

    • bug 1555275: 标签集在删除时发生变化

    • bug 1558683: 版本端点不支持 X-Forwarded-Proto

    • bug 1557495: 状态更改期间可能存在竞争条件

其他说明

  • Glance 配置选项已得到改进,具有详细的帮助文本、示例配置文件的默认值、操作员可以选择的值以及使用 minmax 边界定义的严格范围。

    • 必须注意的是,接受整数值的配置选项现在具有使用 min 和/或 max 边界定义的严格范围。

    • 这使得配置选项无法接受某些以前可能被接受但实际上无效的值。

    • 例如,指定计数(以前负值未定义)的配置选项将不再接受负值。

    • 先前定义为负值(例如,-1 表示无限制)的选项不受此更改影响。

    • 不符合新限制的值将阻止服务启动。日志将包含一条消息,指示有问题配置选项以及拒绝所提供值的原因。

  • 使用 oslo-config-generator 工具自动生成的示例配置文件现在对存储驱动程序配置保持一致的排序。

    • 一些操作员报告了在 Glance 发布 tarball 中发运的示例配置中观察到的重新排序问题。这种重新排序可能会导致下游使用的配置与新引入的上游配置的“diff”不正确。

    • 最新版本的 glance_store 库(用于 Newton 版本的 Glance)将包含修复 glance_store bug 1619487 的修复。

    • 到目前为止,每次运行 oslo-config-generator 都会导致存储驱动程序配置的随机排序。在 Newton 发布后,此顺序将保持一致。

    • 示例或自动生成的文件的存储驱动程序配置顺序应预期为字母顺序,如下所示 - cinderfilesystemhttprbdsheepdogswiftvmware

    • 请注意,“ceph”驱动程序的代码名称是 rbd

    • 请注意,存储选项内的选项顺序不是字母顺序。

  • 已删除的过期任务在 Glance 中。与其他 Glance 资源一样,这是一个“软”删除,也就是说,已删除的任务在数据库中标记为 deleted,因此该任务不会出现在 API 响应中,但与该任务相关的信息仍然保留在数据库中。

  • Glance 和 Nova 包含几乎相同的数字签名模块。为了更好地维护和发展这段代码,并消除模块分歧的可能性,我们已用新的 cursive 库替换了 Glance 中的数字签名模块。

    • cursive 库是一个 OpenStack 项目,它实现了 OpenStack 特定的数字签名验证。

    • 在 Newton 版本中,大部分签名验证代码已从 Glance 中移除。 cursive 已作为依赖项添加到 Glance 中,并且将默认安装。

    • Glance 使用 cursive 库的功能来验证数字签名。为了熟悉这个新的依赖项并查看传递依赖项列表,请访问 http://git.openstack.org/cgit/openstack/cursive