Files
tacker-specs/specs/ocata/tacker-vnfc.rst
Manpreet Kaur 8dcdd1004f Fix old links in Tacker Ocata Spec
Below specifications require changes,
* Implement VNF Components Support in Tacker refers
  old link [1] to install heat agent, the correct link is [2].
* Inline VNF Template refers to old link [3] for vnfc.inc,
  the correct link is [4].
[1] https://github.com/openstack/heat-templates/blob/master/hot/software-config/elements/README.rst
[2] https://docs.openstack.org/heat-agents/latest/install/building_image.html
[3] https://github.com/openstack/tacker/blob/master/api-ref/source/v1/vnfs.inc
[4] https://opendev.org/openstack/tacker/src/branch/master/api-ref/source/v1/vnfs.inc

Change-Id: I8253b5d8ca6529ff5bf1b181f0f50ad559019d4b
Closes-Bug: #1891121
2020-08-11 06:49:57 +00:00

236 lines
5.8 KiB
ReStructuredText

..
This work is licensed under a Creative Commons Attribution 3.0 Unported
License.
http://creativecommons.org/licenses/by/3.0/legalcode
==========================================
Implement VNF Components Support in Tacker
==========================================
https://blueprints.launchpad.net/tacker/+spec/vnf-components-support
VNF Component (VNFC) is network function software that runs within a virtual
runtime defined in a Virtual Deployment Unit (VDU).
This spec describes the plan to introduce VNF Components (VNFC) capability into Tacker.
In its current state, Tacker requires glance images or image location which has preinstalled
network function to instantiate VDU. But this spec provides the plan to specify VNFC
in VNF descriptors.
Problem description
-------------------
Most of the operators have their own installation procedures to create the VDU.
But when they try to use Tacker as NFV orchestration solution, they have to build
the image first and upload it to glance or provide image location in VNFD.
To address this problem in this spec, we introduce the new feature VNF Component
in tacker.
The benefits of using VNFC are as follows:
* To use vendor specific installation procedures to build network function.
* Loose coupling between image and network function which avoids dependency on the
underlying image.
* Ability to standardize a minimal, base image (CentOS, Ubuntu) hardened with
security fixes.
* Easy to update and configure the VDU.
Proposed change
---------------
We have a couple of methods to implement this feature. If we use `heat` as
`vnfc_driver`, then we have a couple of options to opt:
* Use Cloud-Init option to install software component in VDU. The example
provided in `Data Model impact` section uses this option. The advantage
of using this option is, most of the cloud images have cloud-init installed
But the drawback with this option is upgrade of software component will
be difficult.
* Use SoftwareDeployment option to install the software component. But the
image must have heat agents installed.Refer [1] to see how to install heat
agents. These agents will invoke heat-api to send the result of software
deployment.The main advantage of using this option is, we can easily
upgrade the software component at any point in future.
Alternatives
------------
The other alternative option is using `ssh` as `vnfc_driver`. Using this driver,
tacker will have whole control of managing the software component. But in this
blueprint we implement 'heat' as 'vnfc_driver' and also also discuss how we can
use 'ssh' as vnfc driver.
Using SSH like driver, Tacker has whole control of managing the flow. But the
major concern of using SSH driver is storing the passwords. So to address this
issue, we need to integrate OpenStack Barbican with Tacker.
The limitations of this approach is SSH driver completely relies on network
health and tacker has to depend on barbican for storing passwords for security.
Data model impact
-----------------
None
TOSCA Schema impact
-------------------
In VNFM, the VNFD template will be added with the following TOSCA properties:
.. code-block:: yaml
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
The definition of tosca.nodes.nfv.VNFC.Tacker is defined in the
tacker_nfv_defs.yaml as follows:
.. code-block:: 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
The above VNFD will convert to the below heat template
.. code-block:: yaml
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 impact
---------------
None
Security impact
---------------
None
Notifications impact
--------------------
None
Other end user impact
---------------------
None
Performance impact
------------------
None
Other deployer impact
---------------------
None
Developer impact
----------------
None
Implementation
==============
This feature will include changes to Tacker server only.
Changes include:
* New definition for VNFC in `tacker_nfv_defs.yaml` to support validation
of VNFC syntax in tosca-parser.
Assignee(s)
-----------
Primary assignee:
Bharath Thiruveedula <bharath_ves@hotmail.com>
Other contributors:
Manikantha Srinivas Tadi <manikantha.tadi@gmail.com>
Work Items
----------
1. Add VNFC definition to `tacker_nfv_defs.yaml`
2. Add parsing logic for VNFC
3. Add unit tests for VNFC template parsing.
4. Add functional test cases.
5. Introduce priority order for the VNFC node in tosca-parser and heat-translator
6. Add devref to document how VNFC works
Dependencies
============
None
Testing
=======
Add functional and unit tests for this functionality.
Documentation Impact
====================
Tacker VNFC user-guide will be provided.
References
==========
[1] https://docs.openstack.org/heat-agents/latest/install/building_image.html