支持无Keystone Undercloud(基本认证或无认证)

本提案的目标是向社区介绍移除 TripleO undercloud 中的 Keystone,并使用基本认证或无认证(即独立模式)运行剩余 OpenStack 服务。

问题描述

为了拥有一个精简的 undercloud,我们已经简化了 undercloud 架构几个周期,并移除了一些 OpenStack 服务。 在默认使用 network_data_v2ephemeral_heat 之后,我们只剩下 neutron、ironic 和 ironic-inspector 服务。

Keystone 认证和授权对 undercloud 并没有增加太多价值。 我们对所有内容使用 adminadmin 项目。 服务之间也存在一些服务用户(每个服务一个),用于通信。 大部分 overcloud 的部署和配置都是以 os 用户完成的。 此外,对于大型部署,我们会增加 token 的过期时间,使其与 keystone 安全性无关。

提议的变更

概述

目前,Keystone 正在 undercloud 中运行,为剩余部署的服务 neutron、ironic 和 ironic-inspector 提供目录、认证/授权服务。 Ephemeral heat 使用一个假的 keystone 客户端,该客户端不会与 keystone 通信。

所有剩余的服务都可以使用 http_basicnoauth auth_strategy 以独立模式运行,并且使用 openstacksdk 和 keystoneauth 的客户端可以使用 HTTPBasicAuthNoAuth identity 插件与独立服务通信。

本提案是使用基本认证或无认证部署这些 OpenStack 服务,并默认从 undercloud 中移除 Keystone。

  • 使用 http_basic(默认)或 noauth 部署 ironic/ironic-inspector/neutron

这还将允许我们移除一些额外的服务,例如 memcached,主要用于 authtoken 缓存。

替代方案

  • 将 Keystone 保留在 undercloud 中,如前所述。

安全影响

禁用 undercloud 上的 Keystone 不会带来任何重大的安全隐患,因为 undercloud 用户/操作员不需要多租户和 RBAC 要求。 使用 http_basic 认证部署裸机和网络服务将像以前一样保护免受任何可能的入侵。

升级影响

不会有升级影响;此更改对最终用户是透明的。

其他最终用户影响

无。

性能影响

禁用认证和授权将使 API 调用更快,并且 undercloud 的整体资源需求将减少。

其他部署者影响

开发人员影响

无。

实现

  • 添加 THT 支持,用于配置 ironic 和 neutron 服务的 auth_strategy,并管理 ironic 服务使用的 htpasswd 文件。

IronicAuthStrategy: http_basic
NeutronAuthStrategy: http_basic
  • 通常,Identity 服务中间件会根据服务客户端提交的认证 token 提供一个 X-Project-Id header。 但是,当 keystone 不可用时,neutron 期望在 POST 请求中(即 create API)包含 project_id。 此外,metalsmith 会与 neutron 通信以创建实例的 ctlplane 端口。

    为 neutron API http_basic pipeline 添加一个中间件,以在 context 中注入一个假的 project_id。

  • 将基本认证中间件添加到 oslo.middleware 中,并将其用于 undercloud neutron。

  • 创建/更新 clouds.yaml 以使用 auth_type: http_basic,并使用 <service_name>_endpoint_override 条目为公共端点使用端点覆盖。 我们将利用 EndpointMap 并更改 extraconfig/post_deploy 以创建和更新 clouds.yaml。

clouds:
  undercloud:
    auth:
      password: piJsuvz3lKUtCInsiaQd4GZ1w
      username: admin
    auth_type: http_basic
    baremetal_api_version: '1'
    baremetal_endpoint_override: https://192.168.24.2:13385
    baremetal_introspection_endpoint_override: https://192.168.24.2:13050
    network_api_version: '2'
    network_endpoint_override: https://192.168.24.2:13696

负责人

主要负责人

ramishra

其他贡献者

工作项

依赖项

Ephemeral heat 和 network-data-v2 被用作默认值。

文档影响

更新 undercloud 安装和升级指南。

参考资料