OVN

OVN 为 Open vSwitch (OVS) 提供开源网络虚拟化

  • 逻辑交换机

  • IPv4 和 IPv6 逻辑路由器

  • L2/L3/L4 ACL(安全组)

  • 多种隧道叠加(Geneve, STT 和 VXLAN)

  • 逻辑 L4 负载均衡

  • 基于 TOR 的 L2 逻辑-物理网关(VTEP)

  • 基于软件的 L2/L3 逻辑-物理网关

OVN 集成组件存在于 OpenStack Neutron、Kubernetes 等中。

问题描述

目前没有可用的 charms,可以让你轻松部署使用 OVN 所需的服务。

这也有利于 OPNFV 的 JOID 安装程序在其部署中提供另一个场景。

提议的变更

实现新的响应式 charms,添加对部署 OVN 和与 OpenStack 集成的支持。

备选方案

实现

该实现包括以下 charms

  • ovn-central

    • 主要 charm,部署 ovn-northd,OVN 中央控制守护进程,和 ovsdb-server,Open vSwitch 数据库 (OVSDB)。

    • ovn-northd 守护进程负责将高级 OVN 配置转换为逻辑配置,供诸如 ovn-controller 之类的守护进程使用。

    • ovn-northd 进程与 OVN Northbound- 和 Southbound- 数据库通信。

    • ovsdb-server 通过 ovsdb 接口实现的 relations 暴露端点。

    • 该 charm 支持 OVSDB 的集群,为此需要奇数个单元。请注意,随着单元数量的增加,写入性能会降低。

    • 支持运行多个 ovn-northd 守护进程,它们将以主动/被动模式运行。守护进程使用 OVSDB 中的锁定功能自动选择单个活动实例。

    • 该 charm 必须配置 OVSDB 和其客户端之间的 TLS 传输,支持 charm 静态配置或借助 vaulttls-certificates 接口。

  • ovn-chassis

    • 从属 charm,部署 OVN 本地控制器和 Open vSwitch 数据库和交换机。

    • 它通过 OVSDB 协议连接到 OVN Southbound 数据库,通过 OVSDB 协议连接到单元本地 Open vSwitch 数据库,并通过 OpenFlow 连接到单元本地 Open vSwitch 守护进程。

    • 每个虚拟机、软件网关或其他需要 OVN 网络的单元都运行其自己独立的 ovn-controller 守护进程副本。

    • 与特定软件(如 OpenStack nova-compute 和 Kubernetes worker)集成的模块应全部添加到此从属 charm 中。应在运行时通过可选 relations 的存在来确定激活哪些模块。

    • 此 charm 需要一个 LXD profile,以启用 OVN/OVS 组件的容器放置。

  • ovn-dedicated-chassis

    • 需要专用软件网关的部署的主要 charm。

    • 该 charm 将从 ovn-chassis 从属代码库构建。

  • neutron-api-plugin-ovn

    • 从属 charm,在 neutron-api 单元上部署 networking-ovn 组件,并增强 Neutron 的配置以与 OVN ML2 插件一起使用。

  • octavia-ovn-provider

    • 从属 charm,在 octavia 单元上部署 networking-ovn 组件,并增强 Octavia 的配置以与 OVN 提供程序驱动程序一起使用。

该实现包括以下接口

  • ovsdb

    • 促进提供程序 charm 发布 OVSDB 连接属性的接口。

    • 促进请求者 charm 使用远程 OVSDB 的接口。

  • octavia-provider

    • 促进提供程序从属 charm 发布有关 Octavia 提供程序驱动程序的信息,并触发 Octavia 服务的重启的接口。

    • 促进 Octavia charm 添加提供程序信息并响应来自从属提供程序 charm 的重启请求的接口。

这些 charms 的实现方式应是,非 OpenStack 特定组件可以与其他软件组件(如 Charmed Distribution of Kubernetes)一起部署。

尽可能且相关地,应使用或扩展现有的接口或 charm 库以与新的 charms 一起工作。

负责人

主要负责人

fnordahl

Gerrit Topic

对于与此规范相关的所有补丁,请使用 Gerrit topic “ovn-charm”。

git-review -t ovn-charm

工作项

请参阅 实现 部分

仓库

  • charm-ovn

  • charm-ovn-controller

  • charm-ovn-dedicated-controller

  • charm-neutron-api-plugin-ovn

  • charm-octavia-ovn-provider

  • charm-interface-ovsdb

  • charm-interface-octavia-provider

文档

每个 charm 应该包含一个 README,其中包含有关部署 charm 的说明。

除此之外,将在部署指南中添加一个附录,其中包含有关如何使用 OVN 部署 OpenStack 的详细信息。

安全性

OVSDB 及其客户端之间的通信通过使用 TLS 和 PKI 进行身份验证和保护。必须使用安全的最佳实践来实现这一点。

TLS 配置应该可以通过静态配置或通过使用 vaulttls-certificates 接口进行自动证书配置来实现。

测试

编写或更改的代码将涵盖在单元测试中;将使用 Zaza 框架实现功能测试。

依赖项

  • 可能需要更改 openvswitch 源代码包的布局,以适应在不让该包尝试配置交换组件的情况下运行 ovsdb-server 进程。这将有助于在不需要 LXD profile 的情况下进行 ovsdb charm 的容器放置。

  • 可能需要更改 netwokring-ovn 源代码包的布局,以适应 Octavia 提供程序驱动程序启用。