支持无Keystone Undercloud(基本认证或无认证)¶
本提案的目标是向社区介绍移除 TripleO undercloud 中的 Keystone,并使用基本认证或无认证(即独立模式)运行剩余 OpenStack 服务。
问题描述¶
为了拥有一个精简的 undercloud,我们已经简化了 undercloud 架构几个周期,并移除了一些 OpenStack 服务。 在默认使用 network_data_v2 和 ephemeral_heat 之后,我们只剩下 neutron、ironic 和 ironic-inspector 服务。
Keystone 认证和授权对 undercloud 并没有增加太多价值。 我们对所有内容使用 admin 和 admin 项目。 服务之间也存在一些服务用户(每个服务一个),用于通信。 大部分 overcloud 的部署和配置都是以 os 用户完成的。 此外,对于大型部署,我们会增加 token 的过期时间,使其与 keystone 安全性无关。
提议的变更¶
概述¶
目前,Keystone 正在 undercloud 中运行,为剩余部署的服务 neutron、ironic 和 ironic-inspector 提供目录、认证/授权服务。 Ephemeral heat 使用一个假的 keystone 客户端,该客户端不会与 keystone 通信。
所有剩余的服务都可以使用 http_basic 或 noauth auth_strategy 以独立模式运行,并且使用 openstacksdk 和 keystoneauth 的客户端可以使用 HTTPBasicAuth 或 NoAuth 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
其他贡献者
工作项¶
在 oslo.middleware 中添加基本认证中间件 https://review.opendev.org/c/openstack/oslo.middleware/+/802234
支持 ironic 和 neutron 服务中的 auth_strategy https://review.opendev.org/c/openstack/tripleo-heat-templates/+/798241
Neutron 中间件,用于将假的 project_id 添加到 noauth pipeline https://review.opendev.org/c/openstack/neutron/+/799162
配置 neutron paste 部署以进行基本认证 https://review.opendev.org/c/openstack/tripleo-heat-templates/+/804598
默认禁用 keystone https://review.opendev.org/c/openstack/tripleo-heat-templates/+/794912
添加选项以启用 keystone(如果需要)https://review.opendev.org/c/openstack/python-tripleoclient/+/799409
其他补丁:https://review.opendev.org/c/openstack/tripleo-ansible/+/796991 https://review.opendev.org/c/openstack/tripleo-common/+/796825 https://review.opendev.org/c/openstack/tripleo-ansible/+/797381 https://review.opendev.org/c/openstack/tripleo-heat-templates/+/799408
依赖项¶
Ephemeral heat 和 network-data-v2 被用作默认值。
文档影响¶
更新 undercloud 安装和升级指南。