Neutron/L3ServiceTypeFrameworkIntegration
< Neutron
简介
在Havana版本中,L3路由器服务从核心插件中移除,成为一个独立的插件服务。本蓝图旨在将此工作进一步推进,将L3服务与服务类型框架集成。此功能使操作员能够向客户提供来自多个厂商的路由服务。
蓝图
概述
LBaaS是第一个支持服务类型框架的高级服务。FWaaS和VPNaaS集成正在讨论中。为了支持多个厂商,所有高级服务都采用“一个服务插件/多个驱动”模型。租户用户在创建资源时指定提供商。服务插件根据提供商设置将调用分派给厂商实现的驱动程序。LBaaS服务插件引入了插件端驱动程序的概念。插件端驱动程序与控制节点上的服务插件共存,并可以直接访问数据库。
在本蓝图中,我们计划采取的方法与LBaaS与服务框架集成的方案一致。L3路由器插件将成为一个插件端驱动程序。参考设计l3-agent位于agent端,几乎保持不变。
设计考量
今天大多数厂商的L3服务都是作为其自身核心插件的一部分开发的。除了监控路由器配置更改外,这些实现还会执行诸如管理数据库、创建/删除端口以及与后端服务通信等活动。所有这些功能都应允许在服务框架集成中实现。服务插件本身应该是一个非常薄的层,仅用于分派调用并维护必要的状态以确保数据一致性。
本蓝图的目的是支持在一个服务插件下使用多个厂商。如何暴露厂商特定的功能是一个重要的考量。这些功能通常通过扩展来支持。由于服务插件隐藏了厂商实现,这似乎意味着当厂商开始添加其驱动程序和功能时,服务插件将不得不实现所有扩展接口。这个问题也可能发生在其他高级服务中。
依赖项
没有新的依赖关系,也没有CLI或数据库模式更改。
配置
service_plugins = neutron.services.l3_router.l3_router_plugin.L3RouterPlugin [service_providers] service_provider=L3_ROUTER_NAT:linux:neutron.services.l3_router.drivers.linux.l3_router_driver.L3RouterDriver:default service_provider=L3_ROUTER_NAT:vendor1:neutron.services.l3_router.drivers.vendor1.vendor1_l3_driver.L3Driver