Keystone - 更改默认首选 API 版本

当前 Keystone Charm 使用的默认首选 API 版本为 v2.0。

存在多种需要使用 v3 API 的用例。为了使用域、特定于域的驱动程序、LDAP 身份验证、联合身份验证 (OpenID Connect, SAML) 以及其他未提及的功能,必须在目录中公开 Keystone V3 API 端点,并且部署中的所有服务在与 Keystone 身份验证时都必须利用 V3 API。 越来越多的情况下,这些用例将是新 OpenStack 部署的首选操作模式。

此外,v2.0 API 自 OpenStack Mitaka 版本以来已被标记为已弃用 (DEPRECATED),并且将在 Queens 版本周期中移除 (REMOVED)。

问题描述

Keystone charm 当前有两条独立的代码路径来管理 Keystone 服务。 哪条路径被执行取决于 ‘preferred-api-version’ 设置的值。 这导致代码和潜在错误的重复。

我们目前的大部分功能测试都是在配置为使用 v2.0 API 与 Keystone 通信的服务上运行的。

在已经运行的部署中自动更改 Keystone 目录中的端点并重新配置服务以使用 v3 API 可能会导致意想不到的不良副作用。 我们必须找到一种方法使更改后的默认值仅影响新部署,并在 charm 升级时保持现有部署不变。

提议的变更

从 ‘hooks/manager.py’ 中删除 API v2.0 特定的代码,并使用 ‘keystone-manage’ CLI 工具和 v3 API 的组合来管理 Keystone 服务,而不管 ‘preferred-api-version’ 配置选项的值如何。

重新配置现有的单元测试和功能测试,使其在配置为使用 v2.0 和 v3 API 的部署上执行。 这会引起 keystone charm 本身以及任何具有针对其与 keystone charm 关系进行特定测试的其他 charm 的变化。

从 config.yaml 中删除 ‘preferred-api-version’ 的默认值,并让 charm 以编程方式决定使用哪个默认值。 升级函数应设置为保留现有部署中使用的当前默认值 ‘preferred-api-version’ 为 2。

将在 charm 中实现版本栅栏 (version fence),以便新的默认值适用于 OpenStack 版本 ‘Queens’ 及更高版本。

备选方案

没有真正的替代方案。 不更改默认值会使我们对软件当前暴露的实际用例的测试覆盖率降低。

实现

负责人

主要负责人

fnordahl

Gerrit Topic

对于与此规范相关的所有补丁,请使用 Gerrit 主题 “keystone-v3”。

git-review -t keystone-v3

工作项

  • 更新 ‘hooks/manager.py’ 以使用 keystone-manage CLI 和 v3 API 的组合来管理 Keystone 部署。 删除任何 v2.0 API 特定的代码。 此工作项应包括删除 Keystone 配置文件中 admin-token 的依赖,并将 charm 切换为使用 keystoneauth1 和会话。

  • 更新 charmhelpers.contrib.openstack.amulet.utils 中的相关函数

  • 使所有现有的单元测试和功能测试在 gate 中在配置为使用 v2.0 API 和 v3 API 的部署上运行。

  • 实现版本栅栏,该栅栏将新的默认值应用于 OpenStack 版本 ‘Queens’ 及更高版本。

  • 删除 ‘preferred-api-version’ 的默认值,以编程方式在 charm 中做出决定。

  • 确保支持 Keystone v3 API 的 simplestreams 已回溯到我们的稳定版本。

仓库

不需要新的 git 仓库。

文档

此更改需要更新 README.md 中的文档,其中包含有关 charm 如何设置启用 v3 API 的 Keystone 部署中的域和项目的信息。 文档还应包括 openrc 文件和简单的 openstack 客户端用法的示例。

安全性

我们正在使用现有的代码路径,并更改 Keystone 部署的默认配置值以匹配实际使用情况,我们没有引入具有安全影响的新更改。 作为这项工作的一部分,正在重新审查和重新验证现有实现的安全性。

测试

实施将更新现有的单元测试和功能测试,以利用 v2.0 和 v3 API 配置。 用于定期和预发布测试的脚本、捆绑包和规范也应更新,以处理和执行新的默认值。

依赖项

没有外部依赖项。