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.
Installation
Clone oom repository
Copy oom/kubernetes/helm/plugins directory into your local ~/.helm/ folder.
To verify plugins have been installed correctly execute 'helm' without arguments and you should see both 'deploy' and 'undeploy' in the list of available commands.
> helm ....... Usage: Available Commands: dependency manage a chart's dependencies template locally render templates |
---|
How to install ONAP
Install ONAP using one of the public Helm Chart repos https://nexus.onap.org/content/sites/ (ie. staging):
- helm repo add staging https://nexus.onap.org/content/sites/oom-helm-staging/
- helm deploy demo staging/onap --namespace onap
This will install ONAP pods into the 'onap' Kubernetes namespace, with each component installed to a Helm release who's name is prefixed with "demo-"
> helm list
NAME REVISION UPDATED STATUS CHART NAMESPACE
demo 1 Wed Sep 19 12:04:52 2018 DEPLOYED onap-2.0.0 onap
demo-aaf 1 Wed Sep 19 12:04:57 2018 DEPLOYED aaf-2.0.0 onap
demo-aai 1 Wed Sep 19 12:05:09 2018 DEPLOYED aai-2.0.0 onap
demo-appc 1 Wed Sep 19 12:05:22 2018 DEPLOYED appc-2.0.0 onap
demo-clamp 1 Wed Sep 19 12:05:28 2018 DEPLOYED clamp-2.0.0 onap
demo-cli 1 Wed Sep 19 12:05:33 2018 DEPLOYED cli-2.0.0 onap
demo-consul 1 Wed Sep 19 12:05:38 2018 DEPLOYED consul-2.0.0 onap
demo-contrib 1 Wed Sep 19 12:05:42 2018 DEPLOYED contrib-2.0.0 onap
demo-dcaegen2 1 Wed Sep 19 12:05:48 2018 DEPLOYED dcaegen2-2.0.0 onap
demo-dmaap 1 Wed Sep 19 12:05:54 2018 FAILED dmaap-2.0.0 onap
demo-esr 1 Wed Sep 19 12:05:58 2018 DEPLOYED esr-2.0.0 onap
demo-log 1 Wed Sep 19 12:06:03 2018 DEPLOYED log-3.0.0 onap
demo-msb 1 Wed Sep 19 12:06:08 2018 DEPLOYED msb-2.0.0 onap
demo-multicloud 1 Wed Sep 19 12:06:13 2018 DEPLOYED multicloud-2.0.0 onap
demo-nbi 1 Wed Sep 19 12:06:18 2018 DEPLOYED nbi-2.0.0 onap
demo-oof 1 Wed Sep 19 12:06:23 2018 DEPLOYED oof-2.0.0 onap
demo-policy 1 Wed Sep 19 12:06:30 2018 DEPLOYED policy-2.0.0 onap
demo-pomba 1 Wed Sep 19 12:06:41 2018 DEPLOYED pomba-2.0.0 onap
demo-portal 1 Wed Sep 19 12:06:49 2018 DEPLOYED portal-2.0.0 onap
demo-robot 1 Wed Sep 19 12:06:55 2018 DEPLOYED robot-2.0.0 onap
demo-sdc 1 Wed Sep 19 12:07:00 2018 DEPLOYED sdc-2.0.0 onap
demo-sdnc 1 Wed Sep 19 12:07:08 2018 DEPLOYED sdnc-2.0.0 onap
demo-so 1 Wed Sep 19 12:07:16 2018 DEPLOYED so-2.0.0 onap
demo-uui 1 Wed Sep 19 12:07:23 2018 DEPLOYED uui-2.0.0 onap
demo-vfc 1 Wed Sep 19 12:07:29 2018 DEPLOYED vfc-2.0.0 onap
demo-vid 1 Wed Sep 19 12:07:36 2018 DEPLOYED vid-2.0.0 onap
demo-vnfsdk 1 Wed Sep 19 12:07:41 2018 DEPLOYED vnfsdk-2.0.0 onap
Install ONAP from a cloned OOM repository:
- cd oom/kubernetes
- make repo
- make; make onap
- install the helm plugins as described in the "Installation" section immediately below
- helm deploy demo local/onap --namespace onap (or helm deploy demo ./onap --namespace onap)
Not that any overrides that were used previously can still be applied. As shown below:
helm deploy demo local/onap --namespace onap -f ~/overrides.yaml --set vid.enabled=false
How to remove ONAP
Delete the entire ONAP deployment:
helm undeploy demo --purge