统一限制的工具和文档

https://blueprints.launchpad.net/nova/+spec/unified-limits-nova-tool-and-docs

在 Yoga 版本中,Nova 添加了对统一限制的支持,作为一个实验性功能,以便尽早获得反馈并修复运营商在使用过程中发现的问题。现在已经发布了几个版本,我们希望通过创建工具来帮助运营商将现有的传统配额限制从 Nova 复制到 Keystone 中的统一限制,在 Nova 配额文档中发布官方文档,并删除关于 [quota]driver=nova.quota.UnifiedLimitsDriver 配置选项的说明,该说明表明其实验状态。

注意

目前没有立即弃用 Nova 中传统配额系统的计划。这项工作的目标是为选择在 Nova 中使用统一限制的用户提供更好的体验。

问题描述

目前 Nova 文档中没有关于统一限制的文档,也没有任何自动化工具可以将现有的 Nova 传统配额限制生成 Keystone 中的统一限制。

用例

  • 作为运营商,我希望使用工具自动将现有的传统配额限制从 Nova 复制到 Keystone 中的统一限制。

  • 作为运营商,我希望提供关于统一限制配额的正式文档。

提议的变更

我们建议创建一个自动化工具,例如,nova-manage limits migrate_to_unified_limits,它将从 Nova 数据库和配置选项中读取现有的传统配额限制,并使用 Keystone REST API 为它们在 Keystone 中创建等效的统一限制。它将能够迁移默认限制和项目范围的限制。它不会迁移用户范围的限制,因为统一限制不支持它们。

nova-manage 命令将遵循 检查配额 的优先级,并

  1. 检查 nova_api.quotas 数据库表,并为每一行调用 Keystone POST /limits API,其中包含 project_id、资源名称和资源限制。这些是项目范围的限制。

  2. 检查 nova_api.quota_classes 数据库表,查看是否有 class_name 为 default 的行。如果有,则为每一行 class_name 为 default 的行调用 Keystone POST /registered_limits API,其中包含 resource_name 和 default_limit。这些是适用于所有项目的默认限制。

  3. 检查以下配置选项

    [quota]
    instances
    cores
    ram
    metadata_items
    injected_files
    injected_file_content_bytes
    injected_file_path_length
    key_pairs
    server_groups
    server_group_members
    

    对于每个配置选项,使用其设置值或默认值调用 Keystone POST /registered_limits API,其中包含 resource_name 和 default_limit,如果 Keystone 中资源名称尚未具有已注册的限制。这些是适用于所有项目的默认限制。

  4. nova_api.project_user_quotas 数据库表将被忽略,因为统一限制不支持用户范围的限制。

我们将向 Nova 文档添加关于统一限制的正式文档,并删除关于 [quota]driver 配置选项的说明,该说明表明 nova.quota.UnifiedLimitsDriver 处于开发状态。

备选方案

运营商可以使用 openstack limit openstack 客户端命令,而无需提供的工具来创建统一限制。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

最终用户将能够阅读有关配额如何与统一限制一起工作的文档。

性能影响

其他部署者影响

部署者可以选择使用配额限制迁移工具将现有的 Nova 传统配额限制复制到 Keystone 统一限制,而不是使用 openstackclient 命令或手动调用 Keystone REST API。

开发人员影响

升级影响

配额限制迁移工具没有升级影响,运营商可以在任何时间运行该工具,不受升级限制。唯一的要求是 Keystone API 需要可用,并且 nova-manage 必须具有访问具有配置了 [api_database]connection 的 Nova 配置的权限,以便它可以访问 Nova 配额数据库表。

实现

负责人

主要负责人

melwitt

其他贡献者

功能联络人

功能联络人

melwitt

工作项

  • 开发一个 nova-manage limits migrate_to_unified_limits 命令,通过调用 Keystone REST API 将现有的 Nova 传统配额限制从 Nova 数据库和配置选项复制到统一限制

  • 编写 Nova 中统一限制的文档

  • 删除关于驱动程序处于开发状态的 [quota]driver=nova.quota.UnifiedLimitsDriver 的说明

  • 与 Keystone 团队合作,删除 https://docs.openstack.org/keystone/latest/admin/unified-limits.html 中关于统一限制 API 被标记为实验性的文档警告

依赖项

测试

将添加配额限制迁移工具的单元和/或功能测试。

我们还可以将配额限制迁移工具与现有的 nova/tools/hooks/post_test_hook.sh 统一限制覆盖一起在 nova-next CI 作业中进行测试。

文档影响

Nova 统一限制文档的添加将对运营商产生最大的影响。需要更新以下文档

参考资料

历史

修订版

发布名称

描述

2023.2 Bobcat

引入