在 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>
工作项¶
将 VNFC 定义添加到 tacker_nfv_defs.yaml
添加 VNFC 的解析逻辑
添加 VNFC 模板解析的单元测试。
添加功能测试用例。
在 tosca-parser 和 heat-translator 中引入 VNFC 节点的优先级顺序
添加 devref 以记录 VNFC 的工作方式
依赖项¶
无
测试¶
添加此功能的单元测试和功能测试。
文档影响¶
将提供 Tacker VNFC 用户指南。
参考资料¶
[1] https://docs.openstack.org/heat-agents/latest/install/building_image.html