指定 - Neutron 集成¶
OpenStack 云的用户希望使用 Designate DNS 记录自动生成功能,该功能已在上游可用
https://docs.openstack.org/ocata/networking-guide/config-dns-int.html
由于以下原因,基于 Designate 与 Nova 通过 notification_topics 集成的现有解决方案无法满足他们的要求。
问题描述¶
随着 OpenStack Mitaka 版本的发布,引入了一项新功能,即通过 extension_drivers 将 Compute 服务和 Networking 服务与外部 DNSaaS(DNS-as-a-Service)集成。此功能允许在创建 Neutron 端口/浮动 IP 时自动在外部 DNSaaS(例如 Designate)中生成 DNS 记录。
该功能已成为 Designate - Neutron 集成的官方标准,并且似乎正在取代基于 Designate - Nova 集成通过 notificiation_topics 的旧方法。它还解决了旧方法的主要限制,即缺乏对租户内多个 DNS 域的支持。
为了使用此功能,需要在 Neutron Server 端设置以下配置参数
/etc/neutron/neutron.conf
[default] external_dns_driver = designate
[designate] url = <designate 公共端点> admin_auth_url = <keystone 管理端点> admin_username = <管理员用户名> admin_password = <管理员密码> admin_tenant_name = <管理员租户> allow_reverse_dns_lookup = <是否允许创建 PTR 记录> ipv4_ptr_zone_prefix_size = <IPv4 PTR 区域前缀大小> # 可选 ipv6_ptr_zone_prefix_size = <IPv6 PTR 区域前缀大小> # 可选 cafile = <CA 证书路径> # 可选
/etc/neutron/plugins/ml2/ml2_conf.ini
[ml2] extension_drivers = dns
然而,目前 neutron-api charm 没有任何方法来设置这些参数,除了 ml2 扩展。
提议的变更¶
提议的更改可以分为以下几个部分
创建新的接口 (
designate) 以暴露 Designate 服务的公共 API 端点。在 designate 和 neutron-api charms 之间创建新的关系 (“external-dns”),以通过 “designate” 接口通过关系数据发送 Designate 公共端点。在 designate 和 neutron-api charms 上实现响应式处理程序/钩子,以支持新的关系。
向 neutron-api charm 添加新的配置选项以处理以下参数
“allow_reverse_dns_lookup”
目的:指定是否启用创建 PTR 记录的数据类型:boolean 有效值:True / False
“ipv4_ptr_zone_prefix_size”
目的:IPv4 反向查找区域前缀的大小,单位为位数据类型:int 有效值:0 - 32
“ipv6_ptr_zone_prefix_size”
目的:IPv6 反向查找区域前缀的大小,单位为位数据类型:int 有效值:0 - 128
在 neutron-api charm 上实现新的类 (“DesignateContext”),以根据关系数据和配置选项生成以下上下文
- ctxt = {‘enable_designate’: <如果建立“external-dns”关系则为 True>,
‘designate_endpoint’: <从“designate”接口获取>, ‘allow_reverse_dns_lookup’: <基于配置选项>, ‘ipv4_ptr_zone_prefix_size’: <基于配置选项>, ‘ipv6_ptr_zone_prefix_size’: <基于配置选项>}
更新任何可能受到更改影响的其他上下文类。
更新模板以在建立“external-dns”关系时启用该功能。剩余参数将从现有的上下文中检索。
备选方案¶
designate charm 当前支持与 nova-compute charm 集成,以通过 notification_topics 自动生成 DNS 记录。然而,这种方法有一些限制,可以总结如下
从 OpenStack Mitaka 版本开始,它似乎已被 Designate - Neutron 通过 extension_drivers 集成所取代,
它缺乏对租户内多个 DNS 域的支持。
实现¶
负责人¶
- 主要负责人
tkurek
Gerrit Topic¶
对于与此规范相关的所有补丁,请使用 Gerrit 主题 designate-neutron。
git-review -t charm-designate-neutron
工作项¶
更新 designate charm¶
更新 metadata.yaml 和 layer.yaml 文件以支持新的关系和接口
添加新的响应式处理程序以支持新的关系和接口
更新 config.yaml 文件以指示旧选项已过时
更新 README.md 以描述新功能
更新单元测试
更新 neutron-api charm¶
更新 metadata.yaml 文件以支持新的关系和接口
更新 neutron-api charm 以从关系数据中获取“designate_endpoint”
向 neutron-api charm 添加新的配置选项
更新模板文件以实现上游功能
更新 README.md 以描述新功能
更新单元测试
提供 designate 接口¶
创建新的接口以暴露 Designate 服务的公共 API 端点
仓库¶
需要一个新的 git 仓库来提供 designate 接口
https://git.openstack.org/openstack/charm-interface-designate
文档¶
designate 和 neutron-api charms 的 README 文件需要更新以描述新功能。
安全性¶
此更改没有安全影响。
测试¶
designate 和 neutron-api charms 的单元和功能测试需要更新以支持新功能的实现。
依赖项¶
没有外部依赖项。