在 Tacker 中实现 VNF 组件支持

https://blueprints.launchpad.net/tacker/+spec/vnf-components-support

VNF 组件 (VNFC) 是在虚拟部署单元 (VDU) 中定义的虚拟运行时内运行的网络功能软件。

本规范描述了将 VNF 组件 (VNFC) 功能引入 Tacker 的计划。目前,Tacker 需要 glance 镜像或镜像位置,其中预安装了网络功能来实例化 VDU。但本规范提供了在 VNF 描述符中指定 VNFC 的计划。

问题描述

大多数运营商都有自己的安装程序来创建 VDU。但当他们尝试将 Tacker 作为 NFV 编排解决方案使用时,他们必须首先构建镜像并将其上传到 glance,或在 VNFD 中提供镜像位置。

为了解决本规范中的这个问题,我们引入了 tacker 中的新功能 VNF 组件。

使用 VNFC 的好处如下

  • 使用供应商特定的安装程序来构建网络功能。

  • 镜像和网络功能之间的松耦合,避免了对底层镜像的依赖。

  • 能够标准化一个最小的、经过安全加固的基础镜像(CentOS、Ubuntu)。

  • 易于更新和配置 VDU。

提议的变更

我们有几种方法来实现此功能。如果我们将 heat 作为 vnfc_driver 使用,那么我们有几种选择

  • 使用 Cloud-Init 选项在 VDU 中安装软件组件。在 数据模型影响 部分提供的示例使用了此选项。使用此选项的优点是,大多数云镜像都已安装 cloud-init,但此选项的缺点是软件组件的升级将比较困难。

  • 使用 SoftwareDeployment 选项来安装软件组件。但镜像必须安装 heat 代理。请参阅 [1] 了解如何安装 heat 代理。这些代理将调用 heat-api 以发送软件部署的结果。使用此选项的主要优点是,我们可以在未来随时轻松升级软件组件。

备选方案

另一种替代方案是将 ssh 作为 vnfc_driver 使用。使用此驱动程序,tacker 将完全控制软件组件的管理。但在本蓝图,我们实现了“heat”作为“vnfc_driver”,并讨论了如何使用“ssh”作为 vnfc 驱动程序。

使用类似 SSH 的驱动程序,Tacker 完全控制流程的管理。但使用 SSH 驱动程序的主要问题是存储密码。因此,为了解决此问题,我们需要将 OpenStack Barbican 与 Tacker 集成。

这种方法的局限性是 SSH 驱动程序完全依赖于网络健康状况,并且 tacker 必须依赖 barbican 来存储密码以确保安全。

数据模型影响

TOSCA Schema 影响

在 VNFM 中,VNFD 模板将添加以下 TOSCA 属性

firewall_vnfc:
  type: tosca.nodes.nfv.VNFC.Tacker
  properties:
    vnfc_driver: heat
  requirements:
    host: VDU1
  interfaces:
    Standard:
      create: {get_input:file}
      inputs:
            ip_address: { get_attribute: [ HOST, private_address ] }

VDU1:
  type: tosca.nodes.nfv.VDU.Tacker
  properties:
    image: fedora
    flavor: m1.tiny
    availability_zone: nova
    mgmt_driver: noop

tosca.nodes.nfv.VNFC.Tacker 的定义在 tacker_nfv_defs.yaml 中定义如下

tosca.nodes.nfv.VNFC.Tacker:
  derived_from: tosca.nodes.SoftwareComponent
  properties:
     vnfc_driver:
       type: string
       required: true
  requirements:
    - host:
       node: tosca.nodes.nfv.VDU.Tacker
       relationship: tosca.relationships.HostedOn

上述 VNFD 将转换为以下 heat 模板

VDU1:
  type: OS::Nova::Server
  properties:
    availability_zone: nova
    flavor: m1.tiny
    image: fedora
    user_data_format: SOFTWARE_CONFIG

firewall_vnfc_config:
  type: OS::Heat::SoftwareConfig
  properties:
    group: script
    config:
      ...(contents of path/vfw_sw/installer/install.sh)
firewall_vnfc_sw_deployment:
  type: OS::Heat::SoftwareDeployment
  properties:
    config: {get_resource: firewall_vnfc_config}
    server: {get_resource: VDU1}

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

开发人员影响

实现

此功能将仅包含对 Tacker 服务器的更改。

更改包括

  • 为了支持 tosca-parser 中的 VNFC 语法验证,在 tacker_nfv_defs.yaml 中添加了 VNFC 的新定义。

负责人

主要负责人

Bharath Thiruveedula <bharath_ves@hotmail.com>

其他贡献者

Manikantha Srinivas Tadi <manikantha.tadi@gmail.com>

工作项

  1. 将 VNFC 定义添加到 tacker_nfv_defs.yaml

  2. 添加 VNFC 的解析逻辑

  3. 添加 VNFC 模板解析的单元测试。

  4. 添加功能测试用例。

  5. 在 tosca-parser 和 heat-translator 中引入 VNFC 节点的优先级顺序

  6. 添加 devref 以记录 VNFC 的工作方式

依赖项

测试

添加此功能的单元测试和功能测试。

文档影响

将提供 Tacker VNFC 用户指南。

参考资料

[1] https://docs.openstack.org/heat-agents/latest/install/building_image.html