Fenix plugin for rolling upgrades in Tacker
This spec describes a Fenix plugin for rolling upgrades in Tacker Blueprint vnf-rolling-upgrade storyborad https://storyboard.openstack.org/#!/story/2005220 Co-Authored-By: Jangwon Lee <jangwon.lee@dcn.ssu.ac.kr> Change-Id: Idf75f2519a21ebca9aca7d7e150757dc0a336755
This commit is contained in:
313
specs/train/vnf-rolling-upgrade.rst
Normal file
313
specs/train/vnf-rolling-upgrade.rst
Normal file
@@ -0,0 +1,313 @@
|
||||
..
|
||||
This work is licensed under a Creative Commons Attribution 3.0 Unported
|
||||
License.
|
||||
|
||||
|
||||
http://creativecommons.org/licenses/by/3.0/legalcode
|
||||
|
||||
===========================================
|
||||
Fenix plugin for rolling upgrades in Tacker
|
||||
===========================================
|
||||
https://blueprints.launchpad.net/tacker/+spec/vnf-rolling-upgrade
|
||||
https://storyboard.openstack.org/#!/story/2005220
|
||||
|
||||
This spec describes a Fenix plugin for rolling upgrades in Tacker
|
||||
|
||||
Problem description
|
||||
===================
|
||||
For Host upgrade or maintenance, administrator needs to migrate
|
||||
the services running on the host, or provides services through
|
||||
a redundancy model such as ACT-STB.
|
||||
In order to do this, interworking with MANO such as Tacker,
|
||||
which manages the life cycle of VNF, is essential.
|
||||
Fenix project suggested the procedure to work with MANO
|
||||
for maintenance/upgrade [#f1]_.
|
||||
With Fenix, tacker can support maintenance procedure
|
||||
without a service stop. In addition, if VNF provider supports
|
||||
VNF upgrade/maintenance, it also supported in this feature.
|
||||
Therefore, this feature helps the maintenance/upgrade procedure
|
||||
for Host maintenance/upgrade with Fenix.
|
||||
This blueprint is proposed Host maintenance/upgrade mode
|
||||
by leveraging Fenix(rolling infrastructure maintenance,
|
||||
upgrade and scaling).
|
||||
|
||||
Proposed change
|
||||
===============
|
||||
|
||||
The scope of this spec focuses on:
|
||||
|
||||
* Designing a Fenix Plugin for VNF Maintenance. Whereby, an VNF Maintenance
|
||||
driver is designed to collect events triggered by the Ceilometer/aodh.
|
||||
In this spec, the VNF Maintenance driver subscribes event from ceilometer
|
||||
/AODH with 'maintenance.planned' [#f2]_.
|
||||
|
||||
* Defining maintenance policies using the TOSCA Policy format [#f3]_.
|
||||
|
||||
::
|
||||
|
||||
The VNF maintenance framework:
|
||||
+-----------------------------------+
|
||||
| |
|
||||
| |
|
||||
| +-----------------+ |
|
||||
| | VNFM / TOSCA | |
|
||||
| | | |
|
||||
| +--------^--------+ |
|
||||
| | |
|
||||
| +--------v--------+ |
|
||||
| | | | +----------------+
|
||||
| | Fenix Plugin | | | fenix client |
|
||||
| | | | +----------------+
|
||||
| +-^-^-------^-^---+ | |
|
||||
| | | | | | |
|
||||
| +-v-v-------v-v---+ | |
|
||||
| | Ceilometer/AODH | | +-------v--------+
|
||||
| | |<--------------| Fenix-Engine |
|
||||
| +-----------------+ | +----------------+
|
||||
+-----------------------------------+
|
||||
|
||||
The TOSCA scheme could be defined as the following:
|
||||
|
||||
**tosca.policies.tacker.Maintenance**
|
||||
|
||||
.. code-block:: yaml
|
||||
|
||||
tosca_definitions_version: tosca_simple_profile_for_nfv_1_0_0
|
||||
description: Maintenance VNF with Fenix
|
||||
|
||||
metadata:
|
||||
template_name: tosca-vnfd-maintenance
|
||||
|
||||
topology_template:
|
||||
node_templates:
|
||||
VDU1:
|
||||
type: tosca.nodes.nfv.VDU.Tacker
|
||||
capabilities:
|
||||
nfv_compute:
|
||||
properties:
|
||||
num_cpus: 2
|
||||
mem_size: 2048 MB
|
||||
disk_size: 15 GB
|
||||
properties:
|
||||
name: VDU1
|
||||
image: ubuntu18.04
|
||||
availability_zone: nova
|
||||
mgmt_driver: noop
|
||||
maintenance: true
|
||||
|
||||
CP11:
|
||||
type: tosca.nodes.nfv.CP.Tacker
|
||||
properties:
|
||||
management: true
|
||||
order: 0
|
||||
anti_spoofing_protection: false
|
||||
requirements:
|
||||
- virtualLink:
|
||||
node: VL1
|
||||
- virtualBinding:
|
||||
node: VDU1
|
||||
|
||||
VL1:
|
||||
type: tosca.nodes.nfv.VL
|
||||
properties:
|
||||
network_name: net_mgmt
|
||||
vendor: Tacker
|
||||
|
||||
maintenance_url will be created by webhook in Tacker as the following:
|
||||
|
||||
.. code-block:: ini
|
||||
|
||||
v1.0/vnfs/<vnf-uuid>/maintenance/<project_id>
|
||||
|
||||
**vnf-uuid** represents identity of the VNF.
|
||||
**maintenance** means that this URL is used for maintenance.
|
||||
**project_id** represent the project to which the generated VNF belongs.
|
||||
|
||||
|
||||
Maintenance Procedure
|
||||
=====================
|
||||
|
||||
When VNF is created using VNFD, VNF generates 'Maintenance URL'
|
||||
to register event to AODH. Then, when the user requests maintenance,
|
||||
the Notification message generated by Fenix Engine is delivered to
|
||||
ADOH and the event occurs.
|
||||
When an event occurs, Tacker performes the action
|
||||
(e.g., VNF reinstantiation) requested from the Fenix engine to the
|
||||
Tacker via Tacker-plugin.
|
||||
|
||||
Maintenance procedure can be divided into two cases.
|
||||
|
||||
1. VNF is impacted due to the infrastructure (host) maintenance
|
||||
or upgrade and might need to scale down VNF during the
|
||||
operation. Upgrading the VNF is also possible at the same.
|
||||
|
||||
2. VNF is impacted due to the infrastructure (host) maintenance
|
||||
or upgrade. Upgrading the VNF is also possible at the same.
|
||||
|
||||
|
||||
|
||||
In the case of first, Tacker follows default procedure of Fenix and
|
||||
supports preparation procedure for Host Maintenance such as scaling
|
||||
down VNF and migrating instances to another host to have an empty
|
||||
host for infrastructure rolling maintenance or upgrade.
|
||||
|
||||
The procedure is below:
|
||||
|
||||
::
|
||||
|
||||
+--------+ +--------+ +-------+ +-------+
|
||||
| Tacker | | AODH | | Fenix | | admin |
|
||||
+--------+ +--------+ +-------+ +-------+
|
||||
| | | |
|
||||
VNF Creation | | |
|
||||
| | | |
|
||||
|--Register Alarm -->| | |
|
||||
| maintenance.planned | |
|
||||
| Event_type : maintenance.* |<-MAINTENANCE-|
|
||||
| |<----MAINTENANCE-----| |
|
||||
| | | |
|
||||
| event | |
|
||||
|<----MAINTENANCE----| | |
|
||||
| | | |
|
||||
|----------------ACK_MAINTENANCE---------->| |
|
||||
| | | |
|
||||
|<---------------IN_SCALE------------------| |
|
||||
| | | |
|
||||
Scaling | | |
|
||||
|--------------ACK_IN_SCALE--------------->| |
|
||||
| | | |
|
||||
|<-----------PREPARE_MAINTENANCE-----------| |
|
||||
| | | |
|
||||
|----------ACK_PREPARE_MAINTENANCE-------->| |
|
||||
| | | |
|
||||
|<-----------ADMIN_ACTION_DONE-------------| |
|
||||
| | | |
|
||||
|<---------PLANNED_MAINTENANCE-------------| |
|
||||
| | | |
|
||||
|-------ACK_PLANNED_MAINTENANCE----------->| |
|
||||
| | | |
|
||||
|<--------MAINTENANCE_COMPLETE-------------| |
|
||||
| | | |
|
||||
|-------ACK_MAINTENANCE_COMPLETE---------->| |
|
||||
|
||||
|
||||
In the case of second, Tacker doesn't need to follow all of the
|
||||
default procedure. It is only performing VNF maintenance action
|
||||
such as changing the path from STB to ACT, instance re-instantiation
|
||||
or migrating existing instance to already maintained host.
|
||||
|
||||
::
|
||||
|
||||
+--------+ +--------+ +-------+ +-------+
|
||||
| Tacker | | AODH | | Fenix | | admin |
|
||||
+--------+ +--------+ +-------+ +-------+
|
||||
| | | |
|
||||
VNF Creation | | |
|
||||
| | | |
|
||||
|--Register Alarm -->| | |
|
||||
| maintenance.planned | |
|
||||
| Event_type : maintenance.* |<-MAINTENANCE-|
|
||||
| |<----MAINTENANCE-----| |
|
||||
| | | |
|
||||
| event | |
|
||||
|<----MAINTENANCE----| | |
|
||||
| | | |
|
||||
|----------------ACK_MAINTENANCE---------->| |
|
||||
| | | |
|
||||
|<-----------ADMIN_ACTION_DONE-------------| |
|
||||
| | | |
|
||||
|<---------PLANNED_MAINTENANCE-------------| |
|
||||
| | | |
|
||||
|-------ACK_PLANNED_MAINTENANCE----------->| |
|
||||
| | | |
|
||||
|<--------MAINTENANCE_COMPLETE-------------| |
|
||||
| | | |
|
||||
|-------ACK_MAINTENANCE_COMPLETE---------->| |
|
||||
|
||||
Alternatives
|
||||
------------
|
||||
|
||||
None
|
||||
|
||||
Data model impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
REST API impact
|
||||
---------------
|
||||
|
||||
**POST on v1.0/vnfs/<vnf-uuid>/maintenance/<project_id>**
|
||||
|
||||
Security
|
||||
--------
|
||||
|
||||
None
|
||||
|
||||
Notifications impact
|
||||
--------------------
|
||||
|
||||
User triggers maintenance session and Tacker performs the action
|
||||
for maintenance.
|
||||
|
||||
Other end user impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Performance impact
|
||||
------------------
|
||||
|
||||
None
|
||||
|
||||
Other deployer impact
|
||||
---------------------
|
||||
|
||||
None
|
||||
|
||||
Developer impact
|
||||
----------------
|
||||
|
||||
None
|
||||
|
||||
Implementation
|
||||
==============
|
||||
|
||||
Assignee(s)
|
||||
-----------
|
||||
|
||||
Primary assignee:
|
||||
Hyunsik Yang <yangun@dcn.ssu.ac.kr>
|
||||
|
||||
Other contributors:
|
||||
Jangwon Lee <jangwon.lee@dcn.ssu.ac.kr>
|
||||
|
||||
Work Items
|
||||
----------
|
||||
|
||||
#. TOSCA Template definition for Maintenance
|
||||
#. URL Creation for Maintenance Alarm Registration
|
||||
#. Fenix Plug-in Implementation for Fenix API
|
||||
#. Unit and functional tests
|
||||
#. Documentations
|
||||
|
||||
|
||||
|
||||
|
||||
Dependencies
|
||||
============
|
||||
Tacker defines all Maintenance APIs according to APIs defined in Fenix.
|
||||
Tacker supports down scaling of VNFs.
|
||||
|
||||
Testing
|
||||
========
|
||||
- Maintenance VNF testing
|
||||
- AODH Registration with Maintenance
|
||||
- Maintenance event Alarm
|
||||
|
||||
|
||||
Reference
|
||||
=========
|
||||
.. [#f1] https://wiki.openstack.org/wiki/Fenix
|
||||
.. [#f2] http://docs.oasis-open.org/tosca/tosca-nfv/v1.0/tosca-nfv-v1.0.pdf
|
||||
.. [#f3] https://docs.openstack.org/aodh/latest/contributor/event-alarm.html
|
Reference in New Issue
Block a user