指定 - 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 端设置以下配置参数

  1. /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 证书路径> # 可选

  2. /etc/neutron/plugins/ml2/ml2_conf.ini

    [ml2] extension_drivers = dns

然而,目前 neutron-api charm 没有任何方法来设置这些参数,除了 ml2 扩展。

提议的变更

提议的更改可以分为以下几个部分

  1. 创建新的接口 (designate) 以暴露 Designate 服务的公共 API 端点。

  2. 在 designate 和 neutron-api charms 之间创建新的关系 (“external-dns”),以通过 “designate” 接口通过关系数据发送 Designate 公共端点。在 designate 和 neutron-api charms 上实现响应式处理程序/钩子,以支持新的关系。

  3. 向 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

  1. 在 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’: <基于配置选项>}

  2. 更新任何可能受到更改影响的其他上下文类。

  3. 更新模板以在建立“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 的单元和功能测试需要更新以支持新功能的实现。

依赖项

没有外部依赖项。