允许在创建共享网络端口时创建默认记录

https://bugs.launchpad.net/neutron/+bug/1843218

如上方的 bug 线程中所讨论,我们可以添加一项功能,允许用户在共享网络上配置默认区域。

问题描述

在 Neutron 中,当启用 DNS ML2 插件时,每个用户可以管理自己的网络,并为该网络配置一个 dns_domain(例如 example.com)。该 dns_domain(称为区域)只能由一个租户托管。要在一个区域中创建记录,该记录的租户必须与该区域的租户相同。如果用户在该网络中创建端口,则必须与区域相同的租户才能创建记录。

网络(项目 A) <~~> 端口(项目 B) <==> 区域(项目 B) <==> 记录(项目 B)

因此,为了使此功能正常工作,所有这些资源都必须托管在同一个项目(端口、区域和记录)上。

由于端口可以从不同的项目创建,在共享网络的情况下,此功能无法正常工作。

提议的变更

如 RFE 中所述,其想法是让网络的管理员用户在网络上的默认 dns_domain 中配置关键字,以允许每个用户或每个项目拥有不同的区域。

以下是接受的关键字

  • <project_id>

  • <project_name>

  • <user_name>

  • <user_id>

例如,将 <user_name>.<project_id>.example.com. 配置为任何网络上的 dns_domain,将允许用户拥有每个用户和每个项目一个默认区域,然后能够创建记录。

$ source openrc_admin
$ openstack network set --dns-domain "<user_name>.<project_id>.example.com." shared
$ source openrc_demo
$ openstack zone create --email dnsmaster@defaultzone.com UserName.HisProjectId.example.com.
$ openstack port create --dns-name myport port

进一步的更改包括

  • 文档:api-ref。

  • neutron-lib 适配

  • neutron dns_integration ML2 驱动适配

  • dns_integration 单元测试

  • dns_integration 集成测试

计划影响

  • 预计升级没有影响。

  • 预计配置没有影响。

  • 没有破坏性更改

参考资料