Add docs of Instantiate CNF and Artifacts
Usage guides for how to deploy ETSI NFV-SOL containerized VNF is added in user docs. Command-Line Help for Fetch VNF Package Artifacts is added in cli docs. Change-Id: I2543fa0610bc421341ba46d166cf510e34e7971a
This commit is contained in:
@@ -137,7 +137,36 @@ Help:
|
|||||||
specify 'both' option value. Provide this option only when
|
specify 'both' option value. Provide this option only when
|
||||||
--vnfd is set.
|
--vnfd is set.
|
||||||
|
|
||||||
4. List VNF Package
|
4. Fetch VNF Package Artifacts
|
||||||
|
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnf package artifact download --file <FILE: /tmp/deployment.yaml> \
|
||||||
|
<ID: e712a702-741f-4093-a971-b3ad69411ac1> <artifact-path: Files/kubernetes/deployment.yaml>
|
||||||
|
|
||||||
|
|
||||||
|
Help:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnf package artifact download --help
|
||||||
|
usage: openstack vnf package artifact download [-h] [--file <FILE>]
|
||||||
|
<vnf-package> <artifact-path>
|
||||||
|
|
||||||
|
Download VNF package artifact of an on-boarded VNF package.
|
||||||
|
|
||||||
|
positional arguments:
|
||||||
|
<vnf-package> VNF package ID
|
||||||
|
<artifact-path> The artifact file's path
|
||||||
|
|
||||||
|
optional arguments:
|
||||||
|
-h, --help show this help message and exit
|
||||||
|
--file <FILE> Local file to save downloaded VNF Package artifact file
|
||||||
|
data. If this is not specified and there is no redirection
|
||||||
|
then data will not be saved.
|
||||||
|
|
||||||
|
5. List VNF Package
|
||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
@@ -186,7 +215,7 @@ Help:
|
|||||||
tacker server will throw bad request error
|
tacker server will throw bad request error
|
||||||
|
|
||||||
|
|
||||||
5. Show VNF Package
|
6. Show VNF Package
|
||||||
^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
@@ -198,30 +227,43 @@ Result:
|
|||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------------+
|
+----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
| Field | Value |
|
| Field | Value |
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------------+
|
+----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
| Checksum | algorithm=sha512, hash=f8eb9883f04901af2d6e09d3621b7bbb37a36a89b076d322cc5994f3c5264854d1a0137efb23e61be96 |
|
| Additional Artifacts | [ |
|
||||||
| | 9a7ba60989715b3e3feced9d7c582ffaaec6b5a89e2b1 |
|
| | { |
|
||||||
| ID | e712a702-741f-4093-a971-b3ad69411ac1 |
|
| | "artifactPath": "Files/kubernetes/deployment.yaml", |
|
||||||
| Links | packageContent=href=/vnfpkgm/v1/vnf_packages/e712a702-741f-4093-a971-b3ad69411ac1/package_content, |
|
| | "checksum": { |
|
||||||
| | self=href=/vnfpkgm/v1/vnf_packages/e712a702-741f-4093-a971-b3ad69411ac1 |
|
| | "hash": "6a40dfb06764394fb604ae807d1198bc2e2ee8aece3b9483dfde48e53f316a58", |
|
||||||
| Onboarding State | ONBOARDED |
|
| | "algorithm": "SHA-256" |
|
||||||
| Operational State | ENABLED |
|
| | }, |
|
||||||
| Software Images | [{'diskFormat': 'qcow2', 'minDisk': 1, 'minRam': 0, 'imagePath': '', 'size': 1, 'createdAt': '2020-05-28 |
|
| | "metadata": {} |
|
||||||
| | 01:50:14+00:00', 'containerFormat': 'bare', 'version': '0.4.0', 'provider': '', 'id': 'VDU1', 'name': |
|
| | } |
|
||||||
| | 'Software of VDU1', 'checksum': {'algorithm': 'sha-256', 'hash': '6513f21e44aa3da349f248188a44bc304a3653a0 |
|
| | ] |
|
||||||
| | 4122d8fb4535423c8e1d14cd6a153f735bb0982e2161b5b5186106570c17a9e58b64dd39390617cd5a350f78'}, |
|
| Checksum | { |
|
||||||
| | 'userMetadata': {}}] |
|
| | "algorithm": "sha512", |
|
||||||
| Usage State | NOT_IN_USE |
|
| | "hash": "f51de874f4dd831986aff19b4d74b8e30009681683ff2d25b2969a2c679ae3a78f6bd79cc131d00e92a5e264cd8df02e2decb8b3f2acc6e877161977cdbdd304" |
|
||||||
| User Defined Data | |
|
| | } |
|
||||||
| VNF Product Name | Sample VNF |
|
| ID | e712a702-741f-4093-a971-b3ad69411ac1 |
|
||||||
| VNF Provider | Company |
|
| Links | { |
|
||||||
| VNF Software Version | 1.0 |
|
| | "self": { |
|
||||||
| VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d70a1177 |
|
| | "href": "/vnfpkgm/v1/vnf_packages/08d00a5c-e8aa-4219-9412-411458eaa7d2" |
|
||||||
| VNFD Version | 1.0 |
|
| | }, |
|
||||||
+----------------------+------------------------------------------------------------------------------------------------------------+
|
| | "packageContent": { |
|
||||||
|
| | "href": "/vnfpkgm/v1/vnf_packages/08d00a5c-e8aa-4219-9412-411458eaa7d2/package_content" |
|
||||||
|
| | } |
|
||||||
|
| | } |
|
||||||
|
| Onboarding State | ONBOARDED |
|
||||||
|
| Operational State | ENABLED |
|
||||||
|
| Software Images | |
|
||||||
|
| Usage State | IN_USE |
|
||||||
|
| User Defined Data | {} |
|
||||||
|
| VNF Product Name | Sample VNF |
|
||||||
|
| VNF Provider | Company |
|
||||||
|
| VNF Software Version | 1.0 |
|
||||||
|
| VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d7000003 |
|
||||||
|
| VNFD Version | 1.0 |
|
||||||
|
+----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
Help:
|
Help:
|
||||||
|
|
||||||
@@ -243,7 +285,7 @@ Help:
|
|||||||
-h, --help show this help message and exit
|
-h, --help show this help message and exit
|
||||||
|
|
||||||
|
|
||||||
6. Update VNF Package Info
|
7. Update VNF Package Info
|
||||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
@@ -291,7 +333,7 @@ Help:
|
|||||||
to set multiple user defined data)
|
to set multiple user defined data)
|
||||||
|
|
||||||
|
|
||||||
7. Delete VNF Package
|
8. Delete VNF Package
|
||||||
^^^^^^^^^^^^^^^^^^^^^
|
^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
.. code-block:: console
|
.. code-block:: console
|
||||||
|
656
doc/source/user/etsi_containerized_vnf_usage_guide.rst
Normal file
656
doc/source/user/etsi_containerized_vnf_usage_guide.rst
Normal file
@@ -0,0 +1,656 @@
|
|||||||
|
===================================================================
|
||||||
|
(ETSI NFV-SOL) Experimenting CNF with Kubernetes VIM
|
||||||
|
===================================================================
|
||||||
|
|
||||||
|
This section covers how to deploy ETSI NFV-SOL containerized VNF
|
||||||
|
in Tacker using Kubernetes VIM.
|
||||||
|
|
||||||
|
Prepare Kubernetes VIM
|
||||||
|
=======================
|
||||||
|
1. Create a config file
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
Before register a Kubernetes VIM to tacker, we should create config file.
|
||||||
|
The following ``vim-k8s.yaml`` file provides necessary information to
|
||||||
|
register a Kubernetes VIM.
|
||||||
|
This sample specifies the values of the ``bearer_token`` and ``ssl_ca_cert``
|
||||||
|
parameters that can be obtained from the Kubernetes Master-node.
|
||||||
|
For specific methods of obtaining "bearer_token" and "ssl_ca_cert",
|
||||||
|
please refer to [#first]_.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cat vim-k8s.yaml
|
||||||
|
auth_url: "https://192.168.33.100:6443"
|
||||||
|
project_name: "default"
|
||||||
|
bearer_token: "eyJhbGciOiJSUzI1NiIsImtpZCI6IlBRVDgxQkV5VDNVR1M1WGEwUFYxSXFkZFhJWDYzNklvMEp2WklLMnNFdk0ifQ.eyJpc3MiOiJrdWJlcm5ldGVzL3NlcnZpY2VhY2NvdW50Iiwia3ViZXJuZXRlcy5pby9zZXJ2aWNlYWNjb3VudC9uYW1lc3BhY2UiOiJrdWJlLXN5c3RlbSIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VjcmV0Lm5hbWUiOiJhZG1pbi10b2tlbi12cnpoaiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50Lm5hbWUiOiJhZG1pbiIsImt1YmVybmV0ZXMuaW8vc2VydmljZWFjY291bnQvc2VydmljZS1hY2NvdW50LnVpZCI6ImNhY2VmMzEzLTMzYjYtNDQ5MS1iMWUyLTg0NmQ2N2E0OTdkNSIsInN1YiI6InN5c3RlbTpzZXJ2aWNlYWNjb3VudDprdWJlLXN5c3RlbTphZG1pbiJ9.R76VIWVZnQxa9NG02HIqux1xTJG4i7dkXsp52T4UU8bvNfsfi18kW_p3ZvaNTxw0yABBcmkYZoOBe4MNP5cTP6TtR_ERZoA5QCViasW_u36rSTBT0-MHRPbkXjJYetzYaFYUO-DlJd3194yOtVHtrxUd8D31qw0f1FlP8BHxblDjZkYlgYSjHCxcwEdwlnYaa0SiH2kl6_oCBRFg8cUfXDeTOmH9XEfdrJ6ubJ4OyqG6YjfiKDDiEHgIehy7s7vZGVwVIPy6EhT1YSOIhY5aF-G9nQSg-GK1V9LIq7petFoW_MIEt0yfNQVXy2D1tBhdJEa1bgtVsLmdlrNVf-m3uA"
|
||||||
|
ssl_ca_cert: "-----BEGIN CERTIFICATE-----
|
||||||
|
MIICwjCCAaqgAwIBAgIBADANBgkqhkiG9w0BAQsFADASMRAwDgYDVQQDEwdrdWJl
|
||||||
|
LWNhMB4XDTIwMDgyNjA5MzIzMVoXDTMwMDgyNDA5MzIzMVowEjEQMA4GA1UEAxMH
|
||||||
|
a3ViZS1jYTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALxkeE16lPAd
|
||||||
|
pfJj5GJMvZJFcX/CD6EB/LUoKwGmqVoOUQPd3b/NGy+qm+3bO9EU73epUPsVaWk2
|
||||||
|
Lr+Z1ua7u+iib/OMsfsSXMZ5OEPgd8ilrTGhXOH8jDkif9w1NtooJxYSRcHEwxVo
|
||||||
|
+aXdIJhqKdw16NVP/elS9KODFdRZDfQ6vU5oHSg3gO49kgv7CaxFdkF7QEHbchsJ
|
||||||
|
0S1nWMPAlUhA5b8IAx0+ecPlMYUGyGQIQgjgtHgeawJebH3PWy32UqfPhkLPzxsy
|
||||||
|
TSxk6akiXJTg6mYelscuxPLSe9UqNvHRIUoad3VnkF3+0CJ1z0qvfWIrzX3w92/p
|
||||||
|
YsDBZiP6vi8CAwEAAaMjMCEwDgYDVR0PAQH/BAQDAgKkMA8GA1UdEwEB/wQFMAMB
|
||||||
|
Af8wDQYJKoZIhvcNAQELBQADggEBAIbv2ulEcQi019jKz4REy7ZyH8+ExIUBBuIz
|
||||||
|
InAkfxNNxV83GkdyA9amk+LDoF/IFLMltAMM4b033ZKO5RPrHoDKO+xCA0yegYqU
|
||||||
|
BViaUiEXIvi/CcDpT9uh2aNO8wX5T/B0WCLfWFyiK+rr9qcosFYxWSdU0kFeg+Ln
|
||||||
|
YAaeFY65ZWpCCyljGpr2Vv11MAq1Tws8rEs3rg601SdKhBmkgcTAcCzHWBXR1P8K
|
||||||
|
rfzd6h01HhIomWzM9xrP2/2KlYRvExDLpp9qwOdMSanrszPDuMs52okXgfWnEqlB
|
||||||
|
2ZrqgOcTmyFzFh9h2dj1DJWvCvExybRmzWK1e8JMzTb40MEApyY=
|
||||||
|
-----END CERTIFICATE-----"
|
||||||
|
type: "kubernetes"
|
||||||
|
|
||||||
|
2. Register Kubernetes VIM
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
We could register Kubernetes VIM to tacker by running the following command:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vim register --config-file CONFIG_FILE KUBERNETES_VIM_NAME --fit-width
|
||||||
|
|
||||||
|
Config file in chapter 1 need to be input by parameter --config-file.
|
||||||
|
After successful execution, VIM information will be displayed.
|
||||||
|
For example, id.
|
||||||
|
We can also use authentication methods such as username and password to
|
||||||
|
register Kubernetes VIM. For details, please refer to the hyperlink in
|
||||||
|
the [1. Create a config file] chapter.
|
||||||
|
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vim register --config-file vim-k8s.yaml test-vim-k8s --fit-width
|
||||||
|
+----------------+-----------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+----------------+-----------------------------------------------------------------------------------------------------------------+
|
||||||
|
| auth_cred | { |
|
||||||
|
| | "bearer_token": "***", |
|
||||||
|
| | "ssl_ca_cert": "b'gAAAAABfknE_feCVMPWTYZsvrifP0C3j-OQAy17n1CQ8CuTNsg1zGdHKSGW-YmOtHaRvma3pib3gLPjYlrybWxm_W |
|
||||||
|
| | IEtXedP1M11TJb1NbNJclbNgw8-anW3RTO3gahXNvt5yU6iD3XOnG_PtrXydDtcoVBqa3Ry4MhK3bbMMD92PN- |
|
||||||
|
| | veqQV_pV2xza1WJdE8YhAWevsEWaQPaxjxDdS9PWGg-_n5DtVulCrxGJNmEIi8p8cqnFiFuC4I1b1I0MjDt5f5khE1uKtGvhqBf8RpWS_tvZUo4 |
|
||||||
|
| | TCkeqCeh6TxU1q2xDLZM5T8wWXaHDviYt4qmUVQhPsEi2LoO4kipoR2j7cBfOtr6H82HRpaRyiMM46g6BubTylW-qFaxAmX6SuQzJhjwmXM-62r |
|
||||||
|
| | w8pmUvpDO1RKkyGj76XjcsaDwNUkrl3IVFPVsJAaMgDX3-R4adDqmfVSzXRiA0aF91PAuiOlaAMQY8xFjRxqwZKkXq7rN9uKLo8lH0yBPhWgpq7 |
|
||||||
|
| | 6kZpXprlGaHrgKRnswrnMbBqew3W0sTrTW1hm39-jcVrMomNcXLe0b3Ebru-VKfRloW1c6_jDHZ3lKUo6xNg_2Wy52mrryrRqK3xN9itAuXFM5P |
|
||||||
|
| | Cm2bYXIyb4XfQGR4f6fuJU-6j_lEImjr9xY7bXylNDYKjt9c6AUJSPAxGCraPNrjNjmeXSbI3di_yfqzbzk78XaD4u7vcPNUyiWJj5jJB5tOWIZ |
|
||||||
|
| | gnNPdB5mM4H0-sE2eCwDnrZDRqGCskLTnXHpssROZiZYXGkPaRFQS9XAnswL2oTP5I9kOdVlmI89c63bIJwtgPZmUnIdoy9VyDsACO7cf_b4lMr |
|
||||||
|
| | kZYY1VmQRIhJ0pGY_CbZHrwP1V41g9xQAWDar-ezxFypI_lQqjlcaPA0W1ZDNmoJDVrGQJbqprRGW76JhU2qdZR_GRG- |
|
||||||
|
| | DnyWPpmAHjIjtG_6d9d_CGtGs24UTL-Di2B2aLCVaHTGd6ugW7av15ymPgXsXaTox4NVBrU-4l4GgiUN9oE65NF3xfvZ3b2t_bTAxXgCd9gVMgm |
|
||||||
|
| | NGyp8DbdgN9yUuLCBfA2x_KYIBDyQIQv0pevTDaDO3Mfntsq5_KQ0y4A07EKtXkQ7b4qbKoDpksKqlhLJmDm5qsjx3QcybaGXAJ8CTmg0F3vMV8 |
|
||||||
|
| | _mOIkwgj1zegjyUhm0oO-MUr-abuuKg-prejLOzDQpNTYzEnmuvUY4_l4Y3zYm1OlkGoU2yzWOd8vTV7GW9IFSZ76RG9IrrsFLNEXdVlt5ASPaV |
|
||||||
|
| | 1q5CUcsv8mttAEs9HaQe1hPM0Eyigd1xF4u3yPh-- |
|
||||||
|
| | kYlMFNJkNS8m8vtjPMY7oBfVE0KCeIx7SldYTI_xHuadD6n6w0hBSzS4_F_MujKkysmxZ3rq3WOkDdDaNk80IaT1CfYjiSPpXVPqKgJAPK0ChB- |
|
||||||
|
| | JGkN8vDQfkYLuxypOZBXJt3Q=='", |
|
||||||
|
| | "auth_url": "https://192.168.33.100:6443", |
|
||||||
|
| | "username": "None", |
|
||||||
|
| | "key_type": "barbican_key", |
|
||||||
|
| | "secret_uuid": "***", |
|
||||||
|
| | "password": "***" |
|
||||||
|
| | } |
|
||||||
|
| auth_url | https://192.168.33.100:6443 |
|
||||||
|
| created_at | 2020-10-19 08:08:12.116040 |
|
||||||
|
| description | |
|
||||||
|
| id | 8d8373fe-6977-49ff-83ac-7756572ed186 |
|
||||||
|
| is_default | False |
|
||||||
|
| name | test-vim-k8s |
|
||||||
|
| placement_attr | { |
|
||||||
|
| | "regions": [ |
|
||||||
|
| | "default", |
|
||||||
|
| | "kube-node-lease", |
|
||||||
|
| | "kube-public", |
|
||||||
|
| | "kube-system" |
|
||||||
|
| | ] |
|
||||||
|
| | } |
|
||||||
|
| project_id | 2a505a8efb7a4569af73594bd9904834 |
|
||||||
|
| status | PENDING |
|
||||||
|
| type | kubernetes |
|
||||||
|
| updated_at | None |
|
||||||
|
| vim_project | { |
|
||||||
|
| | "name": "default" |
|
||||||
|
| | } |
|
||||||
|
+----------------+-----------------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
Also we can check if the status of VIM is REACHABLE by
|
||||||
|
`openstack vim list` command.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vim list
|
||||||
|
+--------------------------------------+----------------+----------------------------------+------------+------------+-----------+
|
||||||
|
| ID | Name | Tenant_id | Type | Is Default | Status |
|
||||||
|
+--------------------------------------+----------------+----------------------------------+------------+------------+-----------+
|
||||||
|
| 8d8373fe-6977-49ff-83ac-7756572ed186 | test-vim-k8s | 2a505a8efb7a4569af73594bd9904834 | kubernetes | False | REACHABLE |
|
||||||
|
+--------------------------------------+----------------+----------------------------------+------------+------------+-----------+
|
||||||
|
|
||||||
|
Prepare VNF Package
|
||||||
|
===================
|
||||||
|
1. Create directories of VNF Package
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
TOSCA YAML CSAR file is an archive file using the ZIP file format whose
|
||||||
|
structure complies with the TOSCA Simple Profile YAML v1.2 Specification.
|
||||||
|
Here is a sample of building a VNF Package CSAR directory:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ mkdir -p deployment/{TOSCA-Metadata,Definitions,Files/kubernetes}
|
||||||
|
|
||||||
|
2. Create a Kubernetes object file
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
A CSAR VNF package shall have a object file that defines Kubernetes resources
|
||||||
|
to be deployed.
|
||||||
|
The file name shall have an extension of ".yaml".
|
||||||
|
Different Kubernetes api resources can be created according to the content of
|
||||||
|
different yaml files.
|
||||||
|
|
||||||
|
.. note:: Please refer to Kubernetes api resource [#second]_ for an example yaml file of
|
||||||
|
each resource.
|
||||||
|
|
||||||
|
For the types of resources that can be deployed in Victoria, please refer to
|
||||||
|
following link Kubernetes resource kind support [#third]_.
|
||||||
|
|
||||||
|
The following is a simple example of `deployment` resource.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cat ./deployment/Files/kubernetes/deployment.yaml
|
||||||
|
apiVersion: apps/v1
|
||||||
|
kind: Deployment
|
||||||
|
metadata:
|
||||||
|
name: curry-probe-test001
|
||||||
|
namespace: default
|
||||||
|
spec:
|
||||||
|
replicas: 1
|
||||||
|
selector:
|
||||||
|
matchLabels:
|
||||||
|
selector: curry-probe-test001
|
||||||
|
template:
|
||||||
|
metadata:
|
||||||
|
labels:
|
||||||
|
selector: curry-probe-test001
|
||||||
|
app: webserver
|
||||||
|
spec:
|
||||||
|
containers:
|
||||||
|
- name: nginx-liveness-probe
|
||||||
|
image: nginx
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
ports:
|
||||||
|
- containerPort: 80
|
||||||
|
protocol: TCP
|
||||||
|
- image: celebdor/kuryr-demo
|
||||||
|
imagePullPolicy: IfNotPresent
|
||||||
|
name: kuryr-demo-readiness-probe
|
||||||
|
ports:
|
||||||
|
- containerPort: 8080
|
||||||
|
protocol: TCP
|
||||||
|
|
||||||
|
3. Create a TOSCA.meta file
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
The TOSCA.Meta file contains version information for the TOSCA.Meta file, CSAR,
|
||||||
|
Definitions file, and artifact file.
|
||||||
|
Name, content-Type, encryption method, and hash value of the Artifact file are
|
||||||
|
required in the TOSCA.Meta file.
|
||||||
|
Here is an example of a TOSCA.meta file:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cat ./deployment/TOSCA-Metadata/TOSCA.meta
|
||||||
|
TOSCA-Meta-File-Version: 1.0
|
||||||
|
Created-by: dummy_user
|
||||||
|
CSAR-Version: 1.1
|
||||||
|
Entry-Definitions: Definitions/helloworld3_top.vnfd.yaml
|
||||||
|
|
||||||
|
Name: Files/kubernetes/deployment.yaml
|
||||||
|
Content-Type: application/yaml
|
||||||
|
Algorithm: SHA-256
|
||||||
|
Hash: 6a40dfb06764394fb604ae807d1198bc2e2ee8aece3b9483dfde48e53f316a58
|
||||||
|
|
||||||
|
4. Download ETSI Definition file
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Download official documents.
|
||||||
|
ETSI GS NFV-SOL 001 [i.4] specifies the structure and format of the VNFD based
|
||||||
|
on TOSCA specifications.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cd deployment/Definitions
|
||||||
|
$ wget https://forge.etsi.org/rep/nfv/SOL001/raw/v2.6.1/etsi_nfv_sol001_common_types.yaml
|
||||||
|
$ wget https://forge.etsi.org/rep/nfv/SOL001/raw/v2.6.1/etsi_nfv_sol001_vnfd_types.yaml
|
||||||
|
|
||||||
|
5. Create VNFD
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
How to create VNFD composed of plural deployment flavours is described in
|
||||||
|
VNF Descriptor (VNFD) based on ETSI NFV-SOL001 [#fourth]_.
|
||||||
|
|
||||||
|
VNFD will not contain any Kubernetes resource information such as VDU,
|
||||||
|
Connection points, Virtual links because all required components of CNF will be
|
||||||
|
specified in Kubernetes resource files.
|
||||||
|
|
||||||
|
Following is an example of a VNFD file includes the definition of VNF.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cat helloworld3_top.vnfd.yaml
|
||||||
|
tosca_definitions_version: tosca_simple_yaml_1_2
|
||||||
|
|
||||||
|
description: Sample VNF
|
||||||
|
|
||||||
|
imports:
|
||||||
|
- etsi_nfv_sol001_common_types.yaml
|
||||||
|
- etsi_nfv_sol001_vnfd_types.yaml
|
||||||
|
- helloworld3_types.yaml
|
||||||
|
- helloworld3_df_simple.yaml
|
||||||
|
|
||||||
|
topology_template:
|
||||||
|
inputs:
|
||||||
|
selected_flavour:
|
||||||
|
type: string
|
||||||
|
description: VNF deployment flavour selected by the consumer. It is provided in the API
|
||||||
|
|
||||||
|
node_templates:
|
||||||
|
VNF:
|
||||||
|
type: company.provider.VNF
|
||||||
|
properties:
|
||||||
|
flavour_id: { get_input: selected_flavour }
|
||||||
|
descriptor_id: b1bb0ce7-ebca-4fa7-95ed-4840d7000003
|
||||||
|
provider: Company
|
||||||
|
product_name: Sample VNF
|
||||||
|
software_version: '1.0'
|
||||||
|
descriptor_version: '1.0'
|
||||||
|
vnfm_info:
|
||||||
|
- Tacker
|
||||||
|
requirements:
|
||||||
|
#- virtual_link_external # mapped in lower-level templates
|
||||||
|
#- virtual_link_internal # mapped in lower-level templates
|
||||||
|
|
||||||
|
The `helloworld3_types.yaml` file defines the parameter types and default
|
||||||
|
values of the VNF.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cat helloworld3_types.yaml
|
||||||
|
tosca_definitions_version: tosca_simple_yaml_1_2
|
||||||
|
|
||||||
|
description: VNF type definition
|
||||||
|
|
||||||
|
imports:
|
||||||
|
- etsi_nfv_sol001_common_types.yaml
|
||||||
|
- etsi_nfv_sol001_vnfd_types.yaml
|
||||||
|
|
||||||
|
node_types:
|
||||||
|
company.provider.VNF:
|
||||||
|
derived_from: tosca.nodes.nfv.VNF
|
||||||
|
properties:
|
||||||
|
descriptor_id:
|
||||||
|
type: string
|
||||||
|
constraints: [ valid_values: [ b1bb0ce7-ebca-4fa7-95ed-4840d7000003 ] ]
|
||||||
|
default: b1bb0ce7-ebca-4fa7-95ed-4840d7000003
|
||||||
|
descriptor_version:
|
||||||
|
type: string
|
||||||
|
constraints: [ valid_values: [ '1.0' ] ]
|
||||||
|
default: '1.0'
|
||||||
|
provider:
|
||||||
|
type: string
|
||||||
|
constraints: [ valid_values: [ 'Company' ] ]
|
||||||
|
default: 'Company'
|
||||||
|
product_name:
|
||||||
|
type: string
|
||||||
|
constraints: [ valid_values: [ 'Sample VNF' ] ]
|
||||||
|
default: 'Sample VNF'
|
||||||
|
software_version:
|
||||||
|
type: string
|
||||||
|
constraints: [ valid_values: [ '1.0' ] ]
|
||||||
|
default: '1.0'
|
||||||
|
vnfm_info:
|
||||||
|
type: list
|
||||||
|
entry_schema:
|
||||||
|
type: string
|
||||||
|
constraints: [ valid_values: [ Tacker ] ]
|
||||||
|
default: [ Tacker ]
|
||||||
|
flavour_id:
|
||||||
|
type: string
|
||||||
|
constraints: [ valid_values: [ simple ] ]
|
||||||
|
default: simple
|
||||||
|
flavour_description:
|
||||||
|
type: string
|
||||||
|
default: "falvour"
|
||||||
|
requirements:
|
||||||
|
- virtual_link_external:
|
||||||
|
capability: tosca.capabilities.nfv.VirtualLinkable
|
||||||
|
- virtual_link_internal:
|
||||||
|
capability: tosca.capabilities.nfv.VirtualLinkable
|
||||||
|
|
||||||
|
`helloworld3_df_simple.yaml` defines the parameter type of VNF input.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cat helloworld3_df_simple.yaml
|
||||||
|
tosca_definitions_version: tosca_simple_yaml_1_2
|
||||||
|
|
||||||
|
description: Simple deployment flavour for Sample VNF
|
||||||
|
|
||||||
|
imports:
|
||||||
|
- etsi_nfv_sol001_common_types.yaml
|
||||||
|
- etsi_nfv_sol001_vnfd_types.yaml
|
||||||
|
- helloworld3_types.yaml
|
||||||
|
|
||||||
|
topology_template:
|
||||||
|
inputs:
|
||||||
|
descriptor_id:
|
||||||
|
type: string
|
||||||
|
descriptor_version:
|
||||||
|
type: string
|
||||||
|
provider:
|
||||||
|
type: string
|
||||||
|
product_name:
|
||||||
|
type: string
|
||||||
|
software_version:
|
||||||
|
type: string
|
||||||
|
vnfm_info:
|
||||||
|
type: list
|
||||||
|
entry_schema:
|
||||||
|
type: string
|
||||||
|
flavour_id:
|
||||||
|
type: string
|
||||||
|
flavour_description:
|
||||||
|
type: string
|
||||||
|
|
||||||
|
substitution_mappings:
|
||||||
|
node_type: company.provider.VNF
|
||||||
|
properties:
|
||||||
|
flavour_id: simple
|
||||||
|
requirements:
|
||||||
|
virtual_link_external: []
|
||||||
|
|
||||||
|
node_templates:
|
||||||
|
VNF:
|
||||||
|
type: company.provider.VNF
|
||||||
|
properties:
|
||||||
|
flavour_description: A simple flavour
|
||||||
|
|
||||||
|
6. Compress VNF Package
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
CSAR Package should be compressed into a ZIP file for uploading.
|
||||||
|
Following commands are an example of compressing a VNF Package:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cd -
|
||||||
|
$ cd ./deployment
|
||||||
|
$ zip deployment.zip -r Definitions/ Files/ TOSCA-Metadata/
|
||||||
|
$ ls deployment
|
||||||
|
deployment.zip Definitions Files TOSCA-Metadata
|
||||||
|
|
||||||
|
Create and upload VNF Package
|
||||||
|
=============================
|
||||||
|
We need to create an empty VNF package object in tacker and upload compressed
|
||||||
|
VNF package created in previous section.
|
||||||
|
|
||||||
|
1. Create VNF Package
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
An empty vnf package could be created by command
|
||||||
|
`openstack vnf package create`.
|
||||||
|
After create a VNF Package successfully, some information including ID, Links,
|
||||||
|
Onboarding State, Operational State, and Usage State will be returned.
|
||||||
|
When the Onboarding State is CREATED, the Operational State is DISABLED,
|
||||||
|
and the Usage State is NOT_IN_USE, indicate the creation is successful.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnf package create
|
||||||
|
+-------------------+-------------------------------------------------------------------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+-------------------+-------------------------------------------------------------------------------------------------+
|
||||||
|
| ID | 08d00a5c-e8aa-4219-9412-411458eaa7d2 |
|
||||||
|
| Links | { |
|
||||||
|
| | "self": { |
|
||||||
|
| | "href": "/vnfpkgm/v1/vnf_packages/08d00a5c-e8aa-4219-9412-411458eaa7d2" |
|
||||||
|
| | }, |
|
||||||
|
| | "packageContent": { |
|
||||||
|
| | "href": "/vnfpkgm/v1/vnf_packages/08d00a5c-e8aa-4219-9412-411458eaa7d2/package_content" |
|
||||||
|
| | } |
|
||||||
|
| | } |
|
||||||
|
| Onboarding State | CREATED |
|
||||||
|
| Operational State | DISABLED |
|
||||||
|
| Usage State | NOT_IN_USE |
|
||||||
|
| User Defined Data | {} |
|
||||||
|
+-------------------+-------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
2. Upload VNF Package
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Upload the VNF package created above in to the VNF Package by running the
|
||||||
|
following command
|
||||||
|
`openstack vnf package upload --path <path of vnf package> <vnf package ID>`
|
||||||
|
Here is an example of upload VNF package:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnf package upload --path deployment.zip 08d00a5c-e8aa-4219-9412-411458eaa7d2
|
||||||
|
Upload request for VNF package 08d00a5c-e8aa-4219-9412-411458eaa7d2 has been accepted.
|
||||||
|
|
||||||
|
3. Check VNF Package Status
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Check the VNF Package Status by `openstack vnf package list` command.
|
||||||
|
Find the item which the id is same as the created vnf package id, when the
|
||||||
|
Onboarding State is ONBOARDED, and the Operational State is ENABLED, and the
|
||||||
|
Usage State is NOT_IN_USE, indicate the VNF Package is uploaded successfully.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnf package list
|
||||||
|
+--------------------------------------+------------------+------------------+-------------+-------------------+-------------------------------------------------------------------------------------------------+
|
||||||
|
| Id | Vnf Product Name | Onboarding State | Usage State | Operational State | Links |
|
||||||
|
+--------------------------------------+------------------+------------------+-------------+-------------------+-------------------------------------------------------------------------------------------------+
|
||||||
|
| 08d00a5c-e8aa-4219-9412-411458eaa7d2 | Sample VNF | ONBOARDED | NOT_IN_USE | ENABLED | { |
|
||||||
|
| | | | | | "self": { |
|
||||||
|
| | | | | | "href": "/vnfpkgm/v1/vnf_packages/08d00a5c-e8aa-4219-9412-411458eaa7d2" |
|
||||||
|
| | | | | | }, |
|
||||||
|
| | | | | | "packageContent": { |
|
||||||
|
| | | | | | "href": "/vnfpkgm/v1/vnf_packages/08d00a5c-e8aa-4219-9412-411458eaa7d2/package_content" |
|
||||||
|
| | | | | | } |
|
||||||
|
| | | | | | } |
|
||||||
|
+--------------------------------------+------------------+------------------+-------------+-------------------+-------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
Create VNF
|
||||||
|
===========
|
||||||
|
1. Get VNFD ID
|
||||||
|
~~~~~~~~~~~~~~
|
||||||
|
|
||||||
|
The VNFD ID of a uploaded vnf package could be found by
|
||||||
|
`openstack vnf package show <VNF package ID>` command.
|
||||||
|
Here is an example of checking VNFD-ID value:
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnf package show 08d00a5c-e8aa-4219-9412-411458eaa7d2
|
||||||
|
+----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
| Additional Artifacts | [ |
|
||||||
|
| | { |
|
||||||
|
| | "artifactPath": "Files/kubernetes/deployment.yaml", |
|
||||||
|
| | "checksum": { |
|
||||||
|
| | "algorithm": "SHA-256", |
|
||||||
|
| | "hash": "6a40dfb06764394fb604ae807d1198bc2e2ee8aece3b9483dfde48e53f316a58" |
|
||||||
|
| | }, |
|
||||||
|
| | "metadata": {} |
|
||||||
|
| | } |
|
||||||
|
| | ] |
|
||||||
|
| Checksum | { |
|
||||||
|
| | "algorithm": "sha512", |
|
||||||
|
| | "hash": "f51de874f4dd831986aff19b4d74b8e30009681683ff2d25b2969a2c679ae3a78f6bd79cc131d00e92a5e264cd8df02e2decb8b3f2acc6e877161977cdbdd304" |
|
||||||
|
| | } |
|
||||||
|
| ID | 08d00a5c-e8aa-4219-9412-411458eaa7d2 |
|
||||||
|
| Links | { |
|
||||||
|
| | "self": { |
|
||||||
|
| | "href": "/vnfpkgm/v1/vnf_packages/08d00a5c-e8aa-4219-9412-411458eaa7d2" |
|
||||||
|
| | }, |
|
||||||
|
| | "packageContent": { |
|
||||||
|
| | "href": "/vnfpkgm/v1/vnf_packages/08d00a5c-e8aa-4219-9412-411458eaa7d2/package_content" |
|
||||||
|
| | } |
|
||||||
|
| | } |
|
||||||
|
| Onboarding State | ONBOARDED |
|
||||||
|
| Operational State | ENABLED |
|
||||||
|
| Software Images | |
|
||||||
|
| Usage State | NOT_IN_USE |
|
||||||
|
| User Defined Data | {} |
|
||||||
|
| VNF Product Name | Sample VNF |
|
||||||
|
| VNF Provider | Company |
|
||||||
|
| VNF Software Version | 1.0 |
|
||||||
|
| VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d7000003 |
|
||||||
|
| VNFD Version | 1.0 |
|
||||||
|
+----------------------+------------------------------------------------------------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
2. Execute Create VNF command
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
We could create VNF by running `openstack vnflcm create <VNFD ID>`.
|
||||||
|
After the command is executed, the generated ID is `VNF instance ID`.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnflcm create b1bb0ce7-ebca-4fa7-95ed-4840d7000003
|
||||||
|
+--------------------------+---------------------------------------------------------------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+--------------------------+---------------------------------------------------------------------------------------------+
|
||||||
|
| ID | 92cf0ccb-e575-46e2-9c0d-30c67e75aaf6 |
|
||||||
|
| Instantiation State | NOT_INSTANTIATED |
|
||||||
|
| Links | { |
|
||||||
|
| | "self": { |
|
||||||
|
| | "href": "/vnflcm/v1/vnf_instances/92cf0ccb-e575-46e2-9c0d-30c67e75aaf6" |
|
||||||
|
| | }, |
|
||||||
|
| | "instantiate": { |
|
||||||
|
| | "href": "/vnflcm/v1/vnf_instances/92cf0ccb-e575-46e2-9c0d-30c67e75aaf6/instantiate" |
|
||||||
|
| | } |
|
||||||
|
| | } |
|
||||||
|
| VNF Instance Description | None |
|
||||||
|
| VNF Instance Name | None |
|
||||||
|
| VNF Product Name | Sample VNF |
|
||||||
|
| VNF Provider | Company |
|
||||||
|
| VNF Software Version | 1.0 |
|
||||||
|
| VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d7000003 |
|
||||||
|
| VNFD Version | 1.0 |
|
||||||
|
+--------------------------+---------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
Instantiate VNF
|
||||||
|
===============
|
||||||
|
1. Set the value to the request parameter file
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Get the ID of target VIM.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vim list
|
||||||
|
+--------------------------------------+----------------+----------------------------------+------------+------------+-----------+
|
||||||
|
| ID | Name | Tenant_id | Type | Is Default | Status |
|
||||||
|
+--------------------------------------+----------------+----------------------------------+------------+------------+-----------+
|
||||||
|
| 8d8373fe-6977-49ff-83ac-7756572ed186 | test-vim-k8s | 2a505a8efb7a4569af73594bd9904834 | kubernetes | False | REACHABLE |
|
||||||
|
+--------------------------------------+----------------+----------------------------------+------------+------------+-----------+
|
||||||
|
|
||||||
|
A json file includes path of Kubernetes resource definition file and Kubernetes
|
||||||
|
VIM information should be provided while instantiating a containerized VNF.
|
||||||
|
Here is an example of json file:
|
||||||
|
|
||||||
|
`additionalParams` includes path of Kubernetes resource definition file,
|
||||||
|
notice that `lcm-kubernetes-def-files` should be a list.
|
||||||
|
The vimConnectionInfo includes id whose value can be defined autonomously,
|
||||||
|
vimId and vimType.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ cat ./instance_kubernetes.json
|
||||||
|
{
|
||||||
|
"flavourId": "simple",
|
||||||
|
"additionalParams": {
|
||||||
|
"lcm-kubernetes-def-files": [
|
||||||
|
"Files/kubernetes/deployment.yaml"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"vimConnectionInfo": [
|
||||||
|
{
|
||||||
|
"id": "8a3adb69-0784-43c7-833e-aab0b6ab4470",
|
||||||
|
"vimId": "8d8373fe-6977-49ff-83ac-7756572ed186",
|
||||||
|
"vimType": "kubernetes"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
2. Execute the instantiation command
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
Run `openstack vnflcm instantiate <VNF instance ID> <json file>` to instantiate
|
||||||
|
a VNF.
|
||||||
|
|
||||||
|
The `VNF instance ID` is the ID generated after the `openstack vnflcm create`
|
||||||
|
command is executed. We can find it in the [2. Execute Create VNF command]
|
||||||
|
chapter.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnflcm instantiate 92cf0ccb-e575-46e2-9c0d-30c67e75aaf6 instance_kubernetes.json
|
||||||
|
Instantiate request for VNF Instance 92cf0ccb-e575-46e2-9c0d-30c67e75aaf6 has been accepted.
|
||||||
|
|
||||||
|
3. Check the Instantiation State
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
We could check the Instantiation State by running the following command.
|
||||||
|
When the Instantiation State is INSTANTIATED, indicate the instantiation is
|
||||||
|
successful.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ openstack vnflcm show 92cf0ccb-e575-46e2-9c0d-30c67e75aaf6
|
||||||
|
+--------------------------+-------------------------------------------------------------------------------------------+
|
||||||
|
| Field | Value |
|
||||||
|
+--------------------------+-------------------------------------------------------------------------------------------+
|
||||||
|
| ID | 92cf0ccb-e575-46e2-9c0d-30c67e75aaf6 |
|
||||||
|
| Instantiated Vnf Info | { |
|
||||||
|
| | "flavourId": "simple", |
|
||||||
|
| | "vnfState": "STARTED", |
|
||||||
|
| | "extCpInfo": [], |
|
||||||
|
| | "additionalParams": {} |
|
||||||
|
| | } |
|
||||||
|
| Instantiation State | INSTANTIATED |
|
||||||
|
| Links | { |
|
||||||
|
| | "self": { |
|
||||||
|
| | "href": "/vnflcm/v1/vnf_instances/92cf0ccb-e575-46e2-9c0d-30c67e75aaf6" |
|
||||||
|
| | }, |
|
||||||
|
| | "terminate": { |
|
||||||
|
| | "href": "/vnflcm/v1/vnf_instances/92cf0ccb-e575-46e2-9c0d-30c67e75aaf6/terminate" |
|
||||||
|
| | }, |
|
||||||
|
| | "heal": { |
|
||||||
|
| | "href": "/vnflcm/v1/vnf_instances/92cf0ccb-e575-46e2-9c0d-30c67e75aaf6/heal" |
|
||||||
|
| | } |
|
||||||
|
| | } |
|
||||||
|
| VIM Connection Info | [ |
|
||||||
|
| | { |
|
||||||
|
| | "id": "8a3adb69-0784-43c7-833e-aab0b6ab4470", |
|
||||||
|
| | "vimId": "8d8373fe-6977-49ff-83ac-7756572ed186", |
|
||||||
|
| | "vimType": "kubernetes", |
|
||||||
|
| | "accessInfo": {} |
|
||||||
|
| | } |
|
||||||
|
| | ] |
|
||||||
|
| VNF Instance Description | None |
|
||||||
|
| VNF Instance Name | None |
|
||||||
|
| VNF Product Name | Sample VNF |
|
||||||
|
| VNF Provider | Company |
|
||||||
|
| VNF Software Version | 1.0 |
|
||||||
|
| VNFD ID | b1bb0ce7-ebca-4fa7-95ed-4840d7000003 |
|
||||||
|
| VNFD Version | 1.0 |
|
||||||
|
+--------------------------+-------------------------------------------------------------------------------------------+
|
||||||
|
|
||||||
|
4. Check the deployment in Kubernetes
|
||||||
|
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||||
|
To test a containerized VNF is running in target Kubernetes VIM environment,
|
||||||
|
we can check by running the following command.
|
||||||
|
When the READY is 1/1, indicate the deployment is created successfully.
|
||||||
|
|
||||||
|
.. code-block:: console
|
||||||
|
|
||||||
|
$ kubectl get deploy
|
||||||
|
NAME READY UP-TO-DATE AVAILABLE AGE
|
||||||
|
curry-probe-test001 1/1 1 1 8m43s
|
||||||
|
|
||||||
|
References
|
||||||
|
==========
|
||||||
|
.. [#first] https://docs.openstack.org/tacker/latest/install/kubernetes_vim_installation.html
|
||||||
|
.. [#second] https://opendev.org/openstack/tacker/src/branch/master/tacker/tests/unit/vnfm/infra_drivers/kubernetes/kubernetes_api_resource
|
||||||
|
.. [#third] https://specs.openstack.org/openstack/tacker-specs/specs/victoria/container-network-function.html#kubernetes-resource-kind-support
|
||||||
|
.. [#fourth] https://docs.openstack.org/tacker/latest/user/vnfd-sol001.html
|
@@ -50,6 +50,7 @@ Use cases
|
|||||||
alarm_monitoring_usage_guide.rst
|
alarm_monitoring_usage_guide.rst
|
||||||
dynamic_vnffg_usage_guide.rst
|
dynamic_vnffg_usage_guide.rst
|
||||||
enhanced_placement_awareness_usage_guide.rst
|
enhanced_placement_awareness_usage_guide.rst
|
||||||
|
etsi_containerized_vnf_usage_guide.rst
|
||||||
containerized_vnf_usage_guide.rst
|
containerized_vnf_usage_guide.rst
|
||||||
../reference/mistral_workflows_usage_guide.rst
|
../reference/mistral_workflows_usage_guide.rst
|
||||||
multisite_vim_usage_guide.rst
|
multisite_vim_usage_guide.rst
|
||||||
|
Reference in New Issue
Block a user