This patch improves the documentation for the following points:
* Change location of supported k8s/helm/prometheus/alertmanager
versions
* Change location of `--os-tacker-api-version 2` in the CLI
documentation
* Change VIM status from `PENDING` and `REACHABLE` to `ACTIVE`
* Change the description of `TACKER_ROOT`
* Change `dsvm-compliance-sol-api` to `ft-v1-compliance-sol`
* Add a description of the modules required for the VNF Package
generation tools
* Add a note regarding the output file of the VNF Package
generation tools
* Remove unnecessary spaces
Change-Id: I584e43ec3f093b0a3f63cf94bf441318ffd7fd21
13 KiB
VNF Package Generation Tool
For upload VNF Package, it is required to provide a zip file via
openstack command. Here is an example of uploading a VNF
Package named as sample_vnf_package_csar.zip with a zip
file.
$ openstack vnf package upload \
--path ./sample_vnf_package_csar/sample_vnf_package_csar.zip \
6e6b7a6d-0ebe-4085-96c2-b34269d837f9
You can prepare a zip file using a dedicated tool.
Prerequisites
This tool uses the following networks:
net0networksubnet0subnetwork for net0net1networksubnet1subnetwork for net1net_mgmtnetwork
These networks are created by default when you install Tacker via devstack. If these networks do not exist in your OpenStack environment, please create them manually before running this tool.
You can check the networks with the following command.
$ openstack net list
+--------------------------------------+-----------------+----------------------------------------------------------------------------+
| ID | Name | Subnets |
+--------------------------------------+-----------------+----------------------------------------------------------------------------+
| 348d1921-0cca-4730-815a-cc58c503ee65 | public | 64290109-665b-442f-83d4-0a98b8301af8, d963ddfd-3ab1-4320-9efd-311049d92575 |
| 3b069dc1-4247-4063-89dd-0898efa04384 | private | 69f64379-e72f-433d-be01-ff6723e8e955, 9e0c260c-78f7-4f15-9157-40f823433449 |
| 41ebfff9-df23-4690-bef9-a0e76f618947 | net1 | e24618bb-c7bc-4771-a9d8-eba53db3c0ae |
| ab598736-9fc9-470d-b894-b0a4d2f9d46c | lb-mgmt-net | b21032be-c681-46ac-b249-8d3be320f830 |
| d9fc27d5-d881-4cf2-9023-d9cff9df64ed | k8s-pod-net | cd4269f6-9152-4707-95d4-825b722edcf0 |
| dbe64c96-1334-4983-9f60-a90905af6ff0 | net0 | 23737d05-5e3f-4af8-8c4d-83221f794787 |
| eeb398f0-818b-4c75-9573-8f50fa5de501 | net_mgmt | bfa8e9d2-039d-4e59-85a2-8a9801d90cfd |
| ef55ac46-bb38-4abe-bdf7-2b9d3be02266 | k8s-service-net | 0d98b3b8-a6fd-4044-8acf-f0630755f956 |
+--------------------------------------+-----------------+----------------------------------------------------------------------------+
$ openstack subnet list
+--------------------------------------+-------------------------+--------------------------------------+---------------------+
| ID | Name | Network | Subnet |
+--------------------------------------+-------------------------+--------------------------------------+---------------------+
| 0d98b3b8-a6fd-4044-8acf-f0630755f956 | k8s-service-subnet-IPv4 | ef55ac46-bb38-4abe-bdf7-2b9d3be02266 | 10.0.0.128/26 |
| 23737d05-5e3f-4af8-8c4d-83221f794787 | subnet0 | dbe64c96-1334-4983-9f60-a90905af6ff0 | 10.10.0.0/24 |
| 64290109-665b-442f-83d4-0a98b8301af8 | ipv6-public-subnet | 348d1921-0cca-4730-815a-cc58c503ee65 | 2001:db8::/64 |
| 69f64379-e72f-433d-be01-ff6723e8e955 | private-subnet | 3b069dc1-4247-4063-89dd-0898efa04384 | 10.0.0.0/26 |
| 9e0c260c-78f7-4f15-9157-40f823433449 | ipv6-private-subnet | 3b069dc1-4247-4063-89dd-0898efa04384 | fd5f:5cb9:4f13::/64 |
| b21032be-c681-46ac-b249-8d3be320f830 | lb-mgmt-subnet | ab598736-9fc9-470d-b894-b0a4d2f9d46c | 192.168.0.0/24 |
| bfa8e9d2-039d-4e59-85a2-8a9801d90cfd | subnet_mgmt | eeb398f0-818b-4c75-9573-8f50fa5de501 | 192.168.120.0/24 |
| cd4269f6-9152-4707-95d4-825b722edcf0 | k8s-pod-subnet-IPv4 | d9fc27d5-d881-4cf2-9023-d9cff9df64ed | 10.0.0.64/26 |
| d963ddfd-3ab1-4320-9efd-311049d92575 | public-subnet | 348d1921-0cca-4730-815a-cc58c503ee65 | 172.24.4.0/24 |
| e24618bb-c7bc-4771-a9d8-eba53db3c0ae | subnet1 | 41ebfff9-df23-4690-bef9-a0e76f618947 | 10.10.1.0/24 |
+--------------------------------------+-------------------------+--------------------------------------+---------------------+
Usage
By specifying the VIM Type as an option, a sample of the corresponding VNF Package for Tacker v2 API is generated.
This tool support the following VIM Types:
- ETSINFV.OPENSTACK_KEYSTONE.V_3
- ETSINFV.KUBERNETES.V_1
- ETSINFV.HELM.V_3
In this document, TACKER_ROOT is the root of tacker's
repository on the server.
$ cd TACKER_ROOT/tools
$ python3 gen_vnf_pkg.py -h
usage: gen_vnf_pkg.py [-h] -t VIM_TYPE
Create VNF Package zip and parameter files
options:
-h, --help show this help message and exit
-t VIM_TYPE, --type VIM_TYPE
specify the vim type
* ETSINFV.OPENSTACK_KEYSTONE.V_3
* ETSINFV.KUBERNETES.V_1
* ETSINFV.HELM.V_3
Note
This tool requires some Tacker modules, so you need to run it in an environment where Tacker is installed. If you have installed Tacker in python virtual environment using devstack, etc., please activate it as follows before using the tool.
$ source ~/data/venv/bin/activate
(venv) $ python3 gen_vnf_pkg.py -h
The output of this tool is as follows:
- Specified VIM Type
- Generated zip file name
- List of file names included in the generated zip file
$ python3 gen_vnf_pkg.py -t ETSINFV.OPENSTACK_KEYSTONE.V_3
VIM type = ETSINFV.OPENSTACK_KEYSTONE.V_3
Zip file: userdata_standard.zip
--------------------------------------------------
BaseHOT/
Definitions/
Files/
Scripts/
TOSCA-Metadata/
UserData/
Files/images/
Files/images/cirros-0.5.2-x86_64-disk.img
Scripts/coordinate_vnf.py
Scripts/sample_script.py
TOSCA-Metadata/TOSCA.meta
UserData/userdata_standard.py
BaseHOT/simple/
BaseHOT/simple/nested/
BaseHOT/simple/sample3.yaml
BaseHOT/simple/nested/VDU1.yaml
BaseHOT/simple/nested/VDU2.yaml
Definitions/v2_sample3_types.yaml
Definitions/v2_sample3_top.vnfd.yaml
Definitions/etsi_nfv_sol001_vnfd_types.yaml
Definitions/etsi_nfv_sol001_common_types.yaml
Definitions/v2_sample3_df_simple.yaml
--------------------------------------------------
$ python3 gen_vnf_pkg.py -t ETSINFV.KUBERNETES.V_1
VIM type: ETSINFV.KUBERNETES.V_1
Zip file: test_instantiate_cnf_resources.zip
--------------------------------------------------
Definitions/
Files/
Scripts/
TOSCA-Metadata/
Files/kubernetes/
Files/kubernetes/controller-revision.yaml
Files/kubernetes/role_rolebinding_SA.yaml
Files/kubernetes/pod-template.yaml
Files/kubernetes/deployment.yaml
Files/kubernetes/statefulset.yaml
Files/kubernetes/multiple_yaml_priority-class.yaml
Files/kubernetes/persistent-volume-0.yaml
Files/kubernetes/storage-class_pv_pvc.yaml
Files/kubernetes/multiple_yaml_network-policy.yaml
Files/kubernetes/subject-access-review.yaml
Files/kubernetes/self-subject-access-review_and_self-subject-rule-review.yaml
Files/kubernetes/bindings.yaml
Files/kubernetes/pod.yaml
Files/kubernetes/daemon-set.yaml
Files/kubernetes/job.yaml
Files/kubernetes/persistent-volume-1.yaml
Files/kubernetes/horizontal-pod-autoscaler.yaml
Files/kubernetes/multiple_yaml_lease.yaml
Files/kubernetes/namespace.yaml
Files/kubernetes/clusterrole_clusterrolebinding_SA.yaml
Files/kubernetes/storage-class.yaml
Files/kubernetes/limit-range.yaml
Files/kubernetes/local-subject-access-review.yaml
Files/kubernetes/replicaset_service_secret.yaml
Files/kubernetes/resource-quota.yaml
Files/kubernetes/deployment_fail_test.yaml
Files/kubernetes/token-review.yaml
Files/kubernetes/config-map.yaml
Scripts/sample_script.py
TOSCA-Metadata/TOSCA.meta
Definitions/sample_cnf_df_simple.yaml
Definitions/etsi_nfv_sol001_vnfd_types.yaml
Definitions/etsi_nfv_sol001_common_types.yaml
Definitions/sample_cnf_top.vnfd.yaml
Definitions/sample_cnf_types.yaml
--------------------------------------------------
$ python3 gen_vnf_pkg.py -t ETSINFV.HELM.V_3
VIM type = ETSINFV.HELM.V_3
Zip file: test_helm_instantiate.zip
--------------------------------------------------
Definitions/
Files/
Scripts/
TOSCA-Metadata/
Files/kubernetes/
Files/kubernetes/test-chart/
Files/kubernetes/test-chart-0.1.0.tgz
Files/kubernetes/test-chart/templates/
Files/kubernetes/test-chart/Chart.yaml
Files/kubernetes/test-chart/values.yaml
Files/kubernetes/test-chart/.helmignore
Files/kubernetes/test-chart/templates/service.yaml
Files/kubernetes/test-chart/templates/deployment_vdu2.yaml
Files/kubernetes/test-chart/templates/NOTES.txt
Files/kubernetes/test-chart/templates/serviceaccount.yaml
Files/kubernetes/test-chart/templates/_helpers.tpl
Files/kubernetes/test-chart/templates/deployment_vdu1.yaml
Scripts/sample_script.py
TOSCA-Metadata/TOSCA.meta
Definitions/sample_cnf_df_simple.yaml
Definitions/etsi_nfv_sol001_vnfd_types.yaml
Definitions/etsi_nfv_sol001_common_types.yaml
Definitions/sample_cnf_top.vnfd.yaml
Definitions/sample_cnf_types.yaml
--------------------------------------------------
This tool generates a VNF Package zip file and a sample request file for each VIM Type under the output directory.
$ ls output/
helm_instantiate test_instantiate_cnf_resources userdata_standard
$ ls output/userdata_standard/
change_ext_conn_req create_req heal_req instantiate_req scale_in_req
scale_out_req terminate_req update_req userdata_standard.zip
$ ls output/test_instantiate_cnf_resources/
create_req max_sample_heal max_sample_instantiate max_sample_scale_in
max_sample_scale_out max_sample_terminate test_instantiate_cnf_resources.zip
$ ls output/helm_instantiate
create_req helm_heal helm_instantiate_req helm_scale_in helm_scale_out
helm_terminate_req test_helm_instantiate.zip
Note
If a file exists with the same name as the zip file being generated, the tool will fail. When running the tool again to generate a zip file, please delete or rename the old zip file.
For the following request files, endpoint,
ssl_ca_cert and bearer_token need to be
changed by your own k8s cluster information.
- max_sample_instantiate for ETSINFV.KUBERNETES.V_1
- helm_instantiate_req for ETSINFV.HELM.V_3
Note
ssl_ca_cert needs to be on one line as shown below.
"ssl_ca_cert": "-----BEGIN CERTIFICATE-----\nMIIDB...BH\n3bkddspNikO1\n-----END CERTIFICATE-----\n"Please note that line breaks are changed to '\n'.
You can also set your own k8s cluster information to
auth_url, bearer_token, and
ssl_ca_cert in gen_vnf_pkg.py before running this tool.
Note
If you use a VIM that is already registered, modify vimConnectionInfo as follows.
"vimConnectionInfo": {
"vim1": {
"vimId": "REGISTERED_VIM_ID",
"vimType": "VIM_TYPE"
}
}For the following request files, vnfcInstanceId need to
be changed with target vnfcInfo id.
- heal_req for ETSINFV.OPENSTACK_KEYSTONE.V_3
- max_sample_heal for ETSINFV.KUBERNETES.V_1
- helm_heal for ETSINFV.HELM.V_3
And for the following request file, vnfdId need to be
changed with target VNFD id.
- update_req for ETSINFV.OPENSTACK_KEYSTONE.V_3
Note
This tool generates a zip file and a request file based on the following used in FT as a sample VNF Package.
- ETSINFV.OPENSTACK_KEYSTONE.V_3: samples/tests/functional/sol_v2_common/userdata_standard
- ETSINFV.KUBERNETES.V_1: samples/tests/functional/sol_kubernetes_v2/test_instantiate_cnf_resources
- ETSINFV.HELM.V_3: samples/tests/functional/sol_kubernetes_v2/test_helm_instantiate
Please note that if FT is changed, the output of this tool may also change.