跨云计算相关应用共享 SSH 认证信息¶
某些云环境需要为不同主机配置不同的设置(例如,分配比例),但仍然需要允许主机之间的基于 SSH 的迁移。本规范中提出的变更将允许在与云计算关系相关的多个应用程序之间共享凭据。
问题描述¶
目前,nova-cloud-controller charm 会收集所有云计算相关应用程序的 SSH 公钥。这些 SSH 密钥会根据需要共享,但仅限于同一相关应用程序内的对等方。
虽然这可能是一个合理的默认设置,特别是考虑到不同的应用程序可能代表不同类型的计算主机,这些主机不允许彼此之间迁移(例如,SRIOV 与非 SRIOV),但在某些情况下,没有根本原因禁止迁移。
在这种情况下,目前需要手动修改配置文件,也许将其设置为不可变,以提供不同类型的主机所需的不同配置值,同时仍然允许它们彼此之间执行迁移。
因此,人们认为允许在所有 nova-compute 应用程序之间共享所有 SSH 密钥,以克服这些限制是有益的。
本规范旨在解决 Launchpad 上的以下功能请求:https://bugs.launchpad.net/charms/+source/nova-cloud-controller/+bug/1468871
提议的变更¶
通过与 nova-cloud-controller charm 的云计算关系,在所有 nova-compute 应用程序之间共享 SSH 密钥。
代码现在还必须遍历每个云计算关系,每当节点或 SSH 密钥更新时,以保持所有关系中所有计算节点上的 SSH 密钥一致。
升级影响¶
升级 nova-cloud-controller charm 版本后,upgrade-charm hook 代码将遍历所有云计算关系,并将所有 SSH 授权密钥和已知主机设置为关系中的所有计算节点。
性能影响¶
性能会略有下降,因为 hook 在 nova-cloud-controller charm 上设置现在更多的 SSH 密钥以及在每个 nova-compute charm 上处理收到的更多 SSH 密钥时都需要更长的时间。执行的 hook 数量保持不变。
在 cloud-compute-relation-changed hook 上,当计算节点触发 SSH 密钥的更改或添加新计算节点时,由于需要遍历所有关系以使所有计算节点上的所有 SSH 密钥保持一致,因此代码也会花费稍长的时间,而之前它只需要更新触发更改的计算节点所关联的关系。
备选方案¶
一种替代方案可能是编写一个辅助 charm,仅用于共享 SSH 密钥和已知主机条目。虽然理论上可以这样做,但不太理想,因为这实际上会创建两个关于哪些主机应该与哪些主机共享凭据的事实来源,并且它会有效地复制 charm-nova-cloud-controller 已经处理的许多非平凡逻辑。
实现¶
负责人¶
- 主要负责人
Rodrigo Barbieri <rodrigo.barbieri@canonical.com> Paul Goins <paul.goins@canonical.com>
Gerrit Topic¶
使用 Gerrit 主题“migration-ssh-auth-sharing”用于与本规范相关的所有补丁。
git-review -t migration-ssh-auth-sharing
工作项¶
允许在所有云计算相关应用程序之间共享
仓库¶
更改将仅限于 charm-nova-cloud-controller 仓库。
文档¶
包含此更改的新 charm 版本发布说明应提及新的行为。
安全性¶
鉴于所有 nova-compute charm 应用程序都属于同一环境并连接到相同的 nova-cloud-controller 节点,因此不会引发安全问题。
测试¶
可以通过单元测试来测试此功能。对于此特定功能,功能测试可能过于繁琐,尽管也应在实验室环境中进行直接测试作为健全性检查。
依赖项¶
N/A