vFW Helm Chart link:
https://github.com/onap/multicloud-k8s/tree/master/kud/demo/firewall
EdgeXFoundry Helm Chart link:
https://github.com/onap/multicloud-k8s/tree/master/kud/tests/vnfs/edgex/helm/edgex
Create CSAR with Helm chart as an artifact
We need to attach a tgz file to The CSAR is a heat template package . The basic with Helm chart in it. Basic package consists of an environment file, base_dummy.yaml file (for the sake of example) and MANIFEST.json and the tar.gz file (of Helm chart). We need to zip all of these files before onboarding.
One thing to pay much attention to is VNF project dictates the naming convention ; which must be followed while making the zip of all these filestgz.
NOTE: The Naming convention is for the helm chart zip tgz file.
Naming convention follows the format:
...
- Cloudtech is a fixed pattern and should not be changed if not necessary
- Technology: k8s, azure, aws, ….
- Subtype: charts, day0, configtemplate, ...
- Extension: zip, tgz, csar, …”…”
NOTE: The .tgz file must be a tgz created from the top level helm chart folder. I.e a folder that contains a Chart.yaml file in it.
Listed below is an example of the contents inside a heat template package
vfw_k8s_demo.zip file is a zip of the 4 other files( manifest.json, base_dummy.env, base_dummy.yaml, vfw_cloudtech_k8s_juscharts.chartstgz) gets on boarded onto SDC.
$ vfw-k8s/package$ ls |
NOTE:
...
MANIFEST.json
Key thing is note the addition of cloud artifact
...
{ |
Base_dummy.yaml
Designed to be minimal HEAT template.
# #==================LICENSE_START========================================== |
Base_dummy.env
parameters: |
Onboard the CSAR
For onboarding instructions please refer to steps 4-9 from the document here.
...
REGISTER KUD CLOUD REGION with K8s-Plugin
API to support Reachability for Kubernetes Cloud
The command to POST Connectivity Info
{ |
...
curl -i -F "metadata=<post.json;type=application/json" -F file=@ /home/ad_kkkamine/.kube/config -X POST http://MSB_NODE_IP:30280/api/multicloud-k8s/v1/v1/connectivity-info |
Command to GET Connectivity Info
curl -i -X GET http://MSB_NODE_IP:30280/api/multicloud-k8s/v1/v1/connectivity-info/{name} |
Command to DELETE Connectivity Info
curl -i -X DELETE http://MSB_NODE_IP:30280/api/multicloud-k8s/v1/v1/connectivity-info/{name} |
Command to UPDATE/PUT Connectivity Info
curl -i -d @update.json -X PUT http://MSB_NODE_IP:30280/api/multicloud-k8s/v1/v1/connectivity-info |
Register KUD Cloud region with AAI
With k8s cloud region, we need to add a tenant to the k8s cloud region. The 'easy' way is to have the ESR information (in step 1 of cloud registration) point to a real OpenStack tenant (e.g. the OOF tenant in the lab where we tested).
...
An example is shown below for K8s cloud but following the steps 1,2,3 from here. The sample input below is for k8s cloud type.
Step 1 - Cloud Registration/ Create a cloud region to represent the instance.
Note: highlighted part of the body refers to an existing OpenStack tenant (OOF in this case). Has nothing to do with the K8s cloud region we are adding.
PUT https://{{AAI1_PUB_IP}}:{{AAI1_PUB_PORT}}/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/k8scloudowner4/k8sregionfour |
Step 2 – add a complex to the cloud
Note: just adding one that exists already
PUT https://{{AAI1_PUB_IP}}:{{AAI1_PUB_PORT}}/aai/v13/cloud-infrastructure/cloud-regions/cloud-region/k8scloudowner4/k8sregionfour/relationship-list/relationship |
Step 3 - Trigger the Muticloud plugin registration process
...
PUT https://{{AAI1_PUB_IP}}:{{AAI1_PUB_PORT}}/aai/v16/cloud-infrastructure/cloud-regions/cloud-region/k8scloudowner4/k8sregionfour/tenants/tenant/6bbd2981b210461dbc8fe846df1a7808?resource-version=1559345527327 |
Distribute the CSAR
Onboard a service it gets stored in SDC final action is distributed. SO and other services are notified sdc listener in the multicloud sidecar. When distribution happens it takes tar.gz file and uploads to k8s plugin.
Create Profile Manually
K8s-plugin artifacts start in the form of Definitions. These are nothing but Helm Charts wrapped with some metadata about the chart itself. Once the Definitions are created, we are ready to create some profiles so that we can customize that definition and instantiate it in Kubernetes.
...
Sample Definition found here
Creating a Profile Artifact
> cd multicloud-k8s/kud/tests/vnfs/testrb/helm/profile |
...
{ |
Command to create (POST) Profile
curl -i -d @create_rbprofile.json -X POST http://MSB_NODE_IP:30280/api/multicloud-k8s/v1/v1/rb/definition/test-rbdef/v1/profile |
Command to UPLOAD artifact for Profile
curl -i --data-binary @profile.tar.gz -X POST http://MSB_NODE_IP:30280/api/multicloud-k8s/v1/v1/rb/definition/test-rbdef/v1/profile/p1/content |
Command to GET Profiles
# Get all Profiles |
Command to DELETE Profile
curl -i -X DELETE http://MSB_NODE_IP:30280/api/multicloud-k8s/v1/v1/rb/definition/test-rbdef/v1/profile/p1 |
Instantiation
Instantiation is done by SO. SO then talks to Multi Cloud-broker via MSB and that in turn looks up the cloud region in AAI to find the endpoint. If k8sregion one is registered with AAI and SO makes a call with that, then the broker will know that it needs to talk to k8s-plugin based on the type of the registration.
Instantiate the created Profile via the following REST API
Using the following JSON:
...
Instantiate the profile with the ID provided above
Command to Instantiate a Profile
curl -d @create_rbinstance.json http://MSB_NODE_IP:30280/api/multicloud-k8s/v1/v1/instance |
...
{ |
Delete Instantiated Kubernetes resources
The id field from the returned JSON can be used to DELETE the resources created in the previous step. This executes a Delete operation using the Kubernetes API.
GET Instantiated Kubernetes resources
The id field from the returned JSON can be used to GET the resources created in the previous step. This executes a get operation using the Kubernetes API.
...
https://github.com/onap/oom/blob/master/kubernetes/multicloud/resources/config/provider-plugin.json
Create User parameters
We need to create parameters that ultimately get translated as:
...