InstanceAndFloatingIPDNSForNova
- Launchpad 条目: NovaSpec:public-and-private-dns
- 创建:
- 贡献者: Ryan Lane, Andrew Bogott
总结
为 nova 添加功能,以自动管理实例的 DNS 条目,以及与浮动 IP 关联的 DNS 条目,并采用基于驱动程序的系统来处理不同的 DNS 服务器。
发布说明
用户将能够指定用于公共和私有 DNS 的驱动程序,以将 DNS 条目与实例和浮动 IP 地址关联起来。
原理
Nova 已经自动化了许多繁琐的工作。管理 DNS 只是朝着这个方向迈出的又一步。
用户故事
前提条件
设计
Nova 配置将提供以下选项
- floating_ip_dns_manager
- instance_dns_manager
- instance_dns_domain
在创建实例时,nova 将使用实例 DNS 驱动程序和域添加实例名称和 ID 的 DNS 条目。在删除实例时,nova 将删除 DNS 条目。
当用户为指定的域添加浮动 IP 的 DNS 条目时,nova 将使用浮动 DNS 驱动程序添加 DNS 条目。用户可以通过 API 调用获取可用 DNS 域的列表。当浮动 IP 被释放时,其 DNS 条目将自动删除。
用户可以创建新的域或删除现有的域。创建私有域时,可以将其分配给可用区。公共域可以分配给项目,以限制哪些用户可以在这些域中创建条目。
实现
实例 DNS 将作为实例管理的可选步骤添加。浮动 DNS 将作为 API 扩展添加。
所有 DNS 驱动程序都必须可用于实例和浮动 DNS。驱动程序将暴露以下函数
- get_domains()
- create_entry(name, address, type, dnsdomain)
- delete_entry(name, dnsdomain)
- rename_entry(oldname, newname, dnsdomain)
- modify_address(name, address, dnsdomain)
- get_entries_by_address(address, dnsdomain)
- get_entries_by_name(name, dnsdomain)
- create_domain(fqdomain)
- delete_domain(fqdomain)
浮动 DNS API 扩展将暴露上述功能,以及将域分配给可用区或项目的功能。DNS 驱动程序将不知道 nova 特定的信息(例如可用区和项目);这些信息将存储在 nova 数据库中。