可配置实例主机名¶
https://blueprints.launchpad.net/nova/+spec/configurable-instance-hostnames
允许用户在创建实例时指定实例的显式主机名。
问题描述¶
Nova 通过元数据服务和配置驱动程序发布实例的主机名。此主机名基于实例显示名的清理版本,以及在 [api] dhcp_domain 中指定的值。在关于 bug 1581977 的讨论中,有人指出目前无法显式指定主机名,并将其与显示名分离。当 neutron 中启用 DNS 集成 时,我们会使用实例的主机名,这可能导致对主机名缺乏控制,从而阻止用户执行合理的操作,例如根据实例最终可用的完全限定域名来命名实例。
通过允许用户在创建实例时指定显式主机名来纠正这一差距。
用例¶
作为用户,我希望指定显式主机名,而不是依赖于(清理得不好)的显示名版本。
提议的变更¶
允许用户在创建新服务器(POST /servers)和更新现有服务器(PUT /servers/{id})时传递额外的 hostname 字段。此 hostname 属性将具有以下约束:
它必须少于或等于 63 个字符
它必须由字母数字字符和破折号 (
-) 组成。句点、下划线和其他不在该集合中的字符将被拒绝它不能以破折号结尾
当请求多个实例时,主机名将以 -{idx} 为后缀,其中 {idx} 是从 1 开始的索引。如果组合后的名称和后缀超过 63 个字符限制,则名称将被拒绝。
当前仅限管理员访问的 OS-EXT-SRV-ATTR:hostname 实例属性现在将向非管理员用户显示,因为允许用户配置值而不查看它没有意义。
备选方案¶
删除对 neutron DNS 集成功能的的支持,并要求用户在创建实例之前使用
dns_name属性显式创建和配置端口。这将给 nova 带来额外的负担,并导致更差的用户体验。禁止在提供
hostname属性时创建多个实例,类似于我们禁止提供端口时的情况。这是合理的,但会要求用户付出更多努力。开始拒绝不是有效主机名的实例名称。这是一个重大的破坏性更改,将影响许多用户。
数据模型影响¶
无。Instance 对象以及相应的数据库模型和表已经具有 hostname 字段/列。
REST API 影响¶
将引入一个新的微版本。当使用此微版本时,用户在创建新服务器(POST /servers)和更新现有服务器(PUT /servers/{id})时可以传递额外的 hostname 字段。此 hostname 属性将具有以下约束:
它必须少于或等于 63 个字符
它必须由字母数字字符和破折号 (
-) 组成。句点、下划线和其他不在该集合中的字符将被拒绝它不能以破折号结尾
当请求多个实例时,主机名将以 -{idx} 为后缀,其中 {idx} 是从 1 开始的索引。如果组合后的名称和后缀超过 63 个字符限制,则名称将被拒绝。
在更新现有实例的主机名时,neutron 中端口的 dns_name 属性将被更新,元数据服务中公开的 hostname 属性也将被更新。
当前仅限管理员访问的 OS-EXT-SRV-ATTR:hostname 实例属性现在将可供非管理员用户访问。
安全影响¶
无。主机名将由 nova API 和 neutron 验证,以防止无效的主机名。
通知影响¶
无。
其他最终用户影响¶
需要更新 neutron 文档以反映行为的变化。
性能影响¶
无。
其他部署者影响¶
无。
开发人员影响¶
无。
升级影响¶
无。
实现¶
负责人¶
- 主要负责人
stephenfinucane
- 其他贡献者
无
功能联络人¶
- 功能联络人
stephenfinucane
工作项¶
对 nova 进行必要的更改
更新 neutron 文档
依赖项¶
无。
测试¶
可以通过 Tempest 测试进行测试,尽管这可能需要 designate-tempest-plugin 包。大部分工作将通过功能和单元测试完成。
文档影响¶
nova 和 neutron 的文档都需要更新,以引用此功能。api-ref 将更新以记录 API 请求中允许的新字段。
参考资料¶
历史¶
发布名称 |
描述 |
|---|---|
Wallaby |
引入 |