Table of Contents |
---|
Overview
In the Casablanca release ONAP has become very large with
Table of Contents |
---|
Overview
In the Casablanca release ONAP has become very large with many Helm charts ( ~6 x that of Amsterdam ). Every Helm chart contains some amount of external configuration and, unfortunately, there is a limit to the amount of configuration that can exist in a Helm chart (1 MB). As of Casablanca, we in ONAP have exceeded this limit.
ONAP is installed as an umbrella (ie. parent) chart containing many subcharts, each with configuration. The total amount of configuration that resides in configmaps within K8s (exceeding 1MB) causes an installation of ONAP to fail. To work around this issue, a Helm plugin has been introduced that will install/upgrade ONAP by deploying the parent chart and each subchart within its own Helm "release". It is important to note that all releases must be deployed within the same Kubernetes namespace in order for communication between the components to succeed.
Disclaimer:
The plugins described here were introduced to address config map limitations in the Casablanca release. There are alternative projects, such as https://github.com/roboll/helmfile, that can also solve this problem.
The decision to not use an existing project was due to:
- not wanting to introduce a new project-specific deployment specification this late in the release cycle
- the desire to stay as close to an existing Helm solution as possible (we anticipate significant improvements in Helm 3)
That said, the use of deploy and undeploy plugins can be viewed as a temporary solution. In their current state, they have not been hardened (eg. resilient to networking errors) but are made available to unblock installation of ONAP. To avoid networking errors that can cause some of the sub-charts to fail to deploy, it is recommend that Helm deploy and undeploy commands execute from within the same network (e.g Rancher node or Jumpnode) as the K8s cluster you are deploying to.
Install Helm Plugins (deploy & undeploy)
Clone oom repository
Copy oom/kubernetes/helm/plugins directory into your local ~/.helm/ folder.
Code Block | ||
---|---|---|
| ||
# ubuntu sudo cp -R ~/oom/kubernetes/helm/plugins/ ~/.helm |
...
# mac
sudo cp -R ~/oom/kubernetes/helm/plugins/* ~/.helm/plugins |
Verify plugins installed correctly
Execute 'helm' (no arguments) should show both 'deploy' and 'undeploy' in list of available commands.
>sudo helm ....... Usage: Available Commands: dependency manage a chart's dependencies template locally render templates |
---|
Deploying ONAP
Deploy from public Helm Chart Repository
...
Deploy from cloned OOM codebase
Prerequisites:
- clone oom repository
- cd oom/kubernetes
- make repo
- make; make onap
- use sudo for helm commands except when running root
...
ONAP pods deployed into the 'onap' Kubernetes namespace. Each application project is installed as a Helm Release that is prefixed by the parent release name (e.g. "demo-")
...
Code Block | ||
---|---|---|
| ||
helm deploy demo-robot ./onap --namespace onap -f ~/overrides.yaml --set vid.enabled=false |
* Note that any in order for any changes to a Helm Chart to take affect, a make is required (e.g. "make; make onap" or "make robot; make onap")
Helm Deploy plugin logs
Code Block | ||
---|---|---|
| ||
ubuntu@a-ld0:~$ sudo ls ~/.helm/plugins/deploy/cache/onap/logs/onap-
onap-aaf.log onap-cli.log onap-dmaap.log onap-multicloud.log onap-portal.log onap-sniro-emulator.log onap-vid.log
onap-aai.log onap-consul.log onap-esr.log onap-oof.log onap-robot.log onap-so.log onap-vnfsdk.log
onap-appc.log onap-contrib.log onap-log.log onap-policy.log onap-sdc.log onap-uui.log onap-vvp.log
onap-clamp.log onap-dcaegen2.log onap-msb.log onap-pomba.log onap-sdnc.log onap-vfc.log |
Undeploying ONAP
Undeploy entire ONAP deployment
...