使用信任机制进行集群创建和扩展

https://blueprints.launchpad.net/sahara/+spec/cluster-creation-with-trust

集群创建可能是一个相当耗时的操作。目前我们使用会话,而会话通常在不到一小时内过期。因此,目前无法创建需要超过一小时才能启动的集群。

Sahara 可以从用户处获取信任机制,并在需要时用于集群创建或扩展。

问题描述

Sahara 使用用户提供的会话与 OpenStack 服务通信。会话由 keystone 创建,时间相对较短。创建大型集群可能需要超过会话的生命周期。因此,Sahara 在流程结束时将无法操作集群。

提议的变更

Sahara 可以使用从用户处获得的信任机制执行所有集群操作。现在信任机制用于终止临时集群。相同的逻辑可以用于集群创建和扩展过程中的所有操作。

由于我们仍然支持 keystone v2,因此该选项应该是可配置的。我建议默认启用它。

建议的工作流程

  1. 用户请求集群创建或扩展。

  2. Sahara 创建信任机制,用于 OpenStack 操作。此信任机制存储在 DB 的集群的 trust_id 字段中。

  3. Sahara 完成集群配置,或者定期集群清理任务识别到集群激活已超时,并使用信任机制删除集群。

  4. Sahara 删除信任机制。

出于安全原因,创建的信任机制应受时间限制,但其生命周期应足以进行集群创建。配置文件中的参数,默认值为 1 天,应该可以很好地工作。

替代方案

信任 ID 可以存储在内存中,而不是数据库中。但是,此实现将不允许定期集群清理任务(该任务不在租户集群配置请求的上下文中运行)成功删除过时的集群。

值得注意的是,将 trust_id 存储在数据库中也将有助于我们改进集群创建的 HA 能力,如果我们转向多阶段、基于 DAG 的配置流程。

虽然存在对将信任 ID 存储在 DB 中的潜在担忧,但这些 ID 需要有效的身份验证令牌才能被管理员或租户用户利用,从而在控制平面数据库泄露的情况下增加一定程度的安全深度。将来,可以通过秘密存储模块存储所有信任 ID(对于临时集群和长期运行的集群)来进一步保护此机制。但是,此更改超出了本规范的范围。

数据模型影响

无。

REST API 影响

无。

其他最终用户影响

无。

部署者影响

无。

开发者影响

无。

Sahara-image-elements impact

无。

Sahara-dashboard / Horizon 影响

无。

实现

负责人

主要负责人

alazarev (Andrew Lazarev)

其他贡献者

工作项

  • 添加 Sahara 配置选项

  • 实现新的身份验证策略

  • 记录新的行为

依赖项

无。

测试

手动。CI 将覆盖此功能。

文档影响

由于现在正在使用信任机制来清理集群,因此我们需要记录定期集群清理任务应在信任机制到期期限内的时间表上运行。

参考资料

无。