Ussuri 系列发布说明

20.2.0

错误修复

  • Bug 1916052:无法在 glance-api 中创建 trust 错误

  • Bug 1930597:Glance 中“配置 SSL 支持”的文档已过时

20.1.0

错误修复

  • 添加了一个更改到导入 API,它提供了基于时间的镜像锁定,以排除其他导入操作在持有锁定的任务完成之前开始(请参阅 Bug 1884596)。锁定基于我们启动工作任务,该任务的 UUID 存储在 os_glance_import_task 镜像属性中,指示谁拥有锁定。如果持有锁定的任务在 60 分钟内未能取得进展,则允许另一个导入操作窃取锁定并启动另一个导入操作。

20.0.1

错误修复

  • Bug 1881958:如果为导入/复制镜像工作流指定了 –all-stores,则不应使用只读 http 存储

  • Bug 1889640:镜像导入可能导致没有数据的“active”镜像。

  • Bug 1889676:“stores”可以设置为属性,从而破坏多存储指示,表明镜像存在的位置

  • Bug 1887994:管理文档中的混合消息,以在 httpd 下部署

  • Bug 1885725:‘copy-image’ 导入作业不应运行额外的插件

  • Bug 1888349:glance-cache-manage 工具已损坏

  • Bug 1886374:改进多存储的延迟加载机制

  • Bug 1885003:中断的 copy-image 可能会破坏后续操作

  • Bug 1884587:镜像导入 copy-image API 应反映适当的授权

20.0.0

序言

Ussuri 版本包含 Glance 开发优先级的多个重要里程碑。

  • 添加了对以多存储导入镜像的支持

  • 添加了对复制现有镜像到多存储的支持

  • 添加了从单个存储删除镜像的支持

  • 停止支持 python 2.7

新特性

  • 此版本添加了针对几个元数据定义删除 API 的策略执行。以下操作已强制执行并添加到 policy.json 中

    • delete_metadef_namespace

    • delete_metadef_object

    • remove_metadef_resource_type_association

    • remove_metadef_property

    • delete_metadef_tag

    • delete_metadef_tags

    这可以防止不应具有访问这些 API 权限的角色执行与上述操作相关的 API。

  • 添加了新的导入方法 copy-image,它会将现有镜像复制到多个存储。

  • 作为多存储工作的一部分,此版本引入了从单个存储删除。通过新的 ‘/v2/stores’ 端点,API 用户可以请求从单个存储删除镜像,而不是删除整个镜像。此功能可用于清理存储元数据,在镜像数据由于某种原因已从存储中消失的情况下,除了 410 Gone HTTP 响应之外。

  • 引入了新的可互操作镜像导入插件,以解决通过 ‘web-download’ 提供压缩镜像或优化客户端和 Glance 之间的网络利用率的使用案例。

升级说明

  • 添加了新的导入方法 copy-image,它会将现有镜像复制到多个存储。新的导入方法仅在部署中启用了多个存储时才有效。要使用此功能,操作员需要在 enabled_import_methods 配置选项中提及 copy-image 导入方法。请注意,这个新的内部插件适用于通过 可互操作镜像导入过程 导入的镜像。

  • 在本版本中,Glance API 配置选项 admin_role 的默认值已更改。如果您也使用默认策略配置,则此更改不会影响您。如果您没有使用默认策略配置,请继续阅读。

    以前的默认值是,具有 admin 角色的任何用户都可以以管理上下文行事,无论您的策略文件如何定义管理上下文。这可能不是问题,因为通常 admin 角色不会分配给“普通”最终用户。但是,当操作员尝试配置不同级别的管理员时,这会成为一个问题。

    在本版本中,admin_role 的默认值已定义为 __NOT_A_ROLE_07697c71e6174332989d3d5f2a7d2e7c_NOT_A_ROLE__。这实际上使其无法运行(除非您的 Keystone 管理员实际上创建了这样一个角色并将其分配给某人,这不太可能,但有可能,因此您应该检查)。如果您的本地策略测试(您有,对吧?)表明您的 Glance 策略不再像预期的那样工作,那么您一直依赖于 admin_role 配置选项,并且需要修改您的策略文件。(短期解决方案是将 admin_role 选项设置回 admin,但请记住这只是一个短期解决方案,因为此配置选项已被弃用并可能被删除。)

    有关更多信息,请参阅本文档的“弃用说明”部分。

  • 配置选项 show_multiple_locations 在 Ussuri 版本中仍然已弃用,但未删除。我们继续建议不要向最终用户公开镜像位置。有关更多信息,请参阅 OSSN-0065

    该计划仍然是消除该选项并仅使用策略来控制镜像位置访问。但是,这需要进行重大重构,如 草案策略重构规范 中所述。此外,由于没有人能够投入时间,因此目前没有此更改的预计时间表。(Glance 团队乐于与任何对从事这项工作感兴趣的人进一步讨论。)

    请关注 Glance 发布说明和 glance-specs 存储库,以了解有关此问题的最新进展。

  • 已停止 Python 2.7 的支持。Glance 的 Python 2.7 的最后一个版本是 OpenStack Train(Glance 19.x)。Glance 现在支持的 Python 的最低版本是 Python 3.6。

  • sheepdog 存储后端驱动程序在 Train 版本中已被弃用,现在已被删除。仍然使用 Sheepdog 存储的任何部署都需要在升级到此版本之前迁移到不同的后端存储。

  • 可互操作镜像导入过程 中,添加了将镜像导入到多个存储的能力。此功能仅在部署中启用了多个存储时才有效。它引入了 3 个新的可选主体字段到 import API 路径

    • stores:包含要将镜像二进制数据导入到的存储 ID 的列表。

    • all_stores:将数据导入到所有配置的存储中。

    • all_stores_must_succeed:控制是否必须在所有存储中成功导入。

    用户可以使用 2 个新的保留属性来跟踪工作流执行

    • os_glance_importing_to_stores:尚未处理的存储列表。

    • os_glance_failed_import:每次存储中的导入失败时,都会将其添加到此列表中。

  • 策略默认值现在在代码中定义,就像其他 OpenStack 服务一样。升级后,无需提供 policy.json 文件(您不应该这样做),除非您想覆盖默认策略,并且只需要在文件中提及您想要覆盖的策略。您不应再依赖于 default 规则,特别是规则的默认值(已被放宽),以将非默认策略分配给策略文件中未明确指定的规则。

  • 使用 property_protection_rule_format 设置为 policies 的属性保护的操作员仍然必须在策略文件中定义用于属性保护的策略规则。该文件的内容可以是 JSON 或 YAML。此外,我们建议将此文件的绝对路径名设置为 glance-api.conf 文件中 [oslo_policy] 部分的 policy_file 值。

    请注意,如果您为 defaultcontext_is_admin 定义了策略规则,则该策略规则也将用于管理使用 Images API 执行操作的权限,即使这些操作未在策略文件中指定。

  • 如果从 PY27 进行升级,并且 ssl 连接已终止到 glance-api,则现在需要从外部终止连接。

弃用说明

  • Glance API 配置选项 admin_role 在此版本中已被弃用,并且可能在 Victoria 开发周期的开始时被删除,遵循 OpenStack 标准弃用策略

    此选项的作用是向具有特定角色的任何经过身份验证的用户授予完全的管理访问权限。这会覆盖策略配置文件中配置的任何策略规则。 如果您也使用默认策略设置,那么一切都会按预期运行,但是,如果您正在配置自定义策略,这可能会导致异常行为。

    此外,此选项的默认值已在本版本中更改。有关更多信息,请参阅本文档的“升级说明”部分。

    如果您之前知道此选项并实际使用过它,我们为由此带来的不便表示歉意,但总体而言,如果策略配置仅限于策略配置文件,并且消除了此后门,那么对每个人都更好。迁移路径是在策略配置文件中明确提及为此选项配置的角色。

  • Glance API 配置选项 allow_additional_image_properties 在此版本中已被弃用,并且可能在 Victoria 开发周期的开始时被删除,遵循 OpenStack 标准弃用策略

    对于曾经以非默认 False 设置使用过此选项的操作员,迁移路径是将 image_property_quota 选项设置为 0。但是,由于许多其他 OpenStack 服务依赖于读取/写入自定义镜像属性的能力,因此我们怀疑没有人以非默认值使用过该选项。

  • 镜像 checksum 属性包含与镜像关联的镜像数据的 MD5 哈希值。MD5 已经不再被认为是安全的,并且为了符合各种安全标准(例如 FIPS),MD5 算法的实现可能无法在 glance 节点上使用。

    安全的“多哈希”镜像属性 os_hash_algoos_hash_value 自 glance 版本 17.0.0(Rocky)以来在镜像上可用。直到此时,MD5 checksum 属性仅为向后兼容性而填充。但是,它对于验证下载的镜像数据来说不是必需的。

    因此,我们在此版本中宣布弃用图像的 `checksum` 属性。它将保留为图像属性,但从 Victoria 版本开始,新的图像将不再填充 `checksum`。

    用户应改为依赖安全的“多哈希”来验证图像下载。例如,python-glanceclient 自 Rocky 版本(2.13.0)起一直使用多哈希验证(带有可选的 MD5 回退)。

安全问题

  • 如果现有的 `policy.json` 文件依赖于某些策略的 `default` 规则(即并非所有策略都在文件中显式指定),则必须在文件中显式设置 `default` 规则(例如设置为 `"role:admin"`)。`default` 规则的新默认值是 `""`,而在 Queens 版本之前,它一直是 `"role:admin"`(更早的版本是 `"@"`,允许所有操作)。升级到此版本后,应将策略文件替换为仅覆盖需要与默认值不同的策略的文件,而不要依赖 `default` 规则。

  • Glance 的 ssl 支持已被移除,因为它仅在 PY27 下工作,而 PY27 已经不再是受支持的环境。加密连接的终止需要在迁移到 PY3 后在外部进行。任何需要端到端加密的部署都需要在服务前面放置反向代理(使用像 Apache 或 Nginx 这样的完整 http 服务器会导致显著的性能下降,我们建议使用更简单的不会破坏 http 协议的方案),或者在负载均衡器和 glance-api 之间使用 ssl 隧道(例如 stunnel)。

错误修复

  • 错误 1861334:当 Glance 作为 WSGI 应用程序运行时,cors 配置默认值未被使用

  • 错误 1823703:当 Glance 部署在具有 vhost 的反向代理后,错误的版本 URL

  • 错误 1863021:eventlet monkey patch 导致 assert len(_active) == 1 AssertionError

  • 错误 1855708:Py3 中的重载测试已损坏

  • 错误 1850412:glance 中的有用图像属性 - os_admin_user 未记录

  • 错误 1863879:如果传递了 all-stores ‘True’,则会发生多次导入失败

  • 错误 1861723:Glance 在存储初始化之前监听 TCP 套接字

  • 错误 1861501:在 py27 下从 URI 获取的存储 ID 被错误编码