将 enable_new_agents 添加到 neutron 服务器

https://blueprints.launchpad.net/neutron/+spec/enable-new-agents

本提案为网络节点中的代理添加 enable_new_agents 配置,用于运维人员维护。它提出了一种代理可以在不被自动调度选择的情况下启动,但可以手动调度的方式,以便部署者可以手动测试代理。

问题描述

Neutron 缺乏一种在任何客户资源部署到节点之前,通过部署测试资源来测试新添加的网络节点的方式。当云操作员控制网络资源时,他们希望防止用户控制这些资源。例如,他们可能在部署新节点时尝试在新节点上创建测试资源。Neutron 可以通过代理的 admin_state_up=False 来防止用户在节点上创建资源,但 Neutron 无法以 admin_state_up=False 的状态启动代理。Neutron 始终以 admin_state_up=True 的状态启动代理。Nova 和 Cinder 在每个配置文件中都有“enable_new_services”设置,可以禁用初始服务状态来实现这一点。

Neutron 在维护场景中也存在问题。Neutron 可以通过 admin_state_up=False 防止所有用户在代理上创建资源,但通常不允许仅允许管理员创建资源。目前,如果 enable_services_on_agents_with_admin_state_down 配置参数为 True,则管理员可以在代理上创建资源。

提议的变更

本提案为网络节点中的代理添加 enable_new_agents 配置,用于运维人员维护。代理的 admin_state_up 状态在启动时由此配置控制。该配置被添加到 neutron-server 中,因为该提案提供了具有调度方法(例如 l3-agent、dhcp-agent、lbaas-agent)和不具有该方法(例如 ovs-agent、metadata-agent)的所有代理,以便部署者可以轻松启用代理,尽管该提案仅对调度代理有益。

  • 当 enable_new_agents=True 时,Neutron 代理以 admin_state_up=True 的状态启动。这是默认行为。用户可以自由地在其代理上创建资源。

  • 当 enable_new_agents=False 时,Neutron 代理以 admin_state_up=False 的状态启动。这是维护模式。在这种情况下,在管理员将 admin_state_up 更改为 True 之前,用户的资源无法在代理上创建。

默认值为 True,因为本提案无意更改传统行为。

该提案还假定 Neutron 服务器中 enable_services_on_agents_with_admin_state_down 为 True。

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

IPv6 影响

其他部署者影响

本提案将 enable_new_agents 添加到 neutron.conf。该配置设置为默认值 True。它不会更改代理的传统行为。

开发人员影响

社区影响

备选方案

实现

负责人

Hirofumi Ichihara <ichihara-hirofumi>

工作项

  • 添加 enable_new_agents 配置和实现

依赖项

测试

Tempest 测试

功能测试

添加测试,以确保代理以 admin_state_up False 的状态启动。

API 测试

文档影响

用户文档

新的配置选项将被记录。

以下是一个维护场景。维护场景将被记录。

先决条件:Neutron 服务器运行 enable_services_on_agents_with_admin_state_down=True。

  1. 管理员准备一个新的网络节点。

  2. 管理员将 enable_new_agents=False 添加到 neutron.conf 并启动一个 neutron 服务器,然后启动所有代理。

  3. 所有代理以 admin_state_up=False 的状态运行。

  4. 管理员需要创建一个网络(或路由器)并将其分配给目标代理。

  5. 管理员创建连接到网络资源的 VM,然后管理员确认其功能。

  6. 管理员删除所有资源并在测试后更新代理为 admin_state_up=True。

开发人员文档

参考资料