Merge "Add standardized helm chart for aai"
diff --git a/docs/OOM Project Description/oom_project_description.rst b/docs/OOM Project Description/oom_project_description.rst
deleted file mode 100644
index ba9de5f..0000000
--- a/docs/OOM Project Description/oom_project_description.rst
+++ /dev/null
@@ -1,131 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-
-.. _onap-operations-manager-project:
-
-ONAP Operations Manager Project
-###############################
-
-.. contents::
-   :depth: 3
-..
-
-Introduction
-============
-
-The ONAP Operations Manager (OOM) is responsible for life-cycle
-management of the ONAP platform itself; components such as MSO, SDNC,
-etc. It is not responsible for the management of services, VNFs or
-infrastructure instantiated by ONAP or used by ONAP to host such
-services or VNFs. OOM uses the open-source Kubernetes container
-management system as a means to manage the Docker containers that
-compose ONAP where the containers are hosted either directly on
-bare-metal servers or on VMs hosted by a 3rd party management system.
-OOM ensures that ONAP is easily deployable and maintainable throughout
-its life cycle while using hardware resources efficiently. 
-
-Quick Start Guide
-=================
-
-Pre-requisites
---------------
-
-* Your Kubernetes environment must be available. For more information see, `ONAP on Kubernetes <https://wiki.onap.org/display/DW/ONAP+on+Kubernetes>`__.
-* Deployment artifacts are customized for your location.
-
-**Step 1**
-
-Review and optionally change configuration parameters:
-
-Setup the `/oom/kubernetes/config/onap-parameters.yaml <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/onap-parameters.yaml;h=7ddaf4d4c3dccf2fad515265f0da9c31ec0e64b1;hb=refs/heads/master>`__ file with key-value pairs specific to your OpenStack environment.
-
-OR
-
-There is a `sample <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/onap-parameters-sample.yaml;h=3a74beddbbf7f9f9ec8e5a6abaecb7cb238bd519;hb=refs/heads/master>`__ that may help you out or even be usable directly if you don't intend to actually use OpenStack resources.
-
-**Step 2**
-
-In-order to be able to support multiple ONAP instances within a single kubernetes environment, a configuration set is required. To do this, execute the `createConfig.sh <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/createConfig.sh;h=f226ccae47ca6de15c1da49be4b8b6de974895ed;hb=refs/heads/master>`__ script::
-
-  oom/kubernetes/config/createConfig.sh -n onap
-  
-Where:
-
-* onap' refers to the name of the instance. This serves as the Namespace prefix for each deployed ONAP component (for example, onap-mso).
-
-**Step 3**
-
-The bash script `createAll.bash <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/oneclick/createAll.bash;h=5e5f2dc76ea7739452e757282e750638b4e3e1de;hb=refs/heads/master>`__ is used to create an ONAP deployment with kubernetes. It has two primary functions:
-
-* Creating the namespaces used to encapsulate the ONAP components, and
-* Creating the services, pods and containers within each of these namespaces that provide the core functionality of ONAP.
-
-Before you execute the createAll.bash. script, pod config-init (`pod-config-init.yaml <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/pod-config-init.yaml;h=b1285ce21d61815c082f6d6aa3c43d00561811c7;hb=refs/heads/master>`__) may need editing to match your environment and deployment into the default namespace.
-
-To deploy the containers and create your ONAP system, execute the following command::
-  
-  oom/kubernetes/oneclick/createAll.bash -n onap
-  
-Additional information on usage of createAll.bash
--------------------------------------------------
-
-Namespaces provide isolation between ONAP components as ONAP release 1.0 contains duplicate application (for example, mariadb) and port usage.
-
-As such createAll.bash requires the user to enter a namespace prefix string that can be used to separate multiple deployments of onap. The result will be set of 10 namespaces (for example, onap-sdc, onap-aai, onap-mso, onap-message-router, onap-robot, onap-vid, onap-sdnc, onap-portal, onap-policy, onap-appc) being created within the kubernetes environment.
-
-Deploying multiple ONAP instances within the same Kubernetes cluster
---------------------------------------------------------------------
-
-To deploy multiple ONAP instances, you must specify the number of Instances you would like to create in a Kubernetes cluster using createAllbash.
-
-This is currently required due to the use of NodePort ranges. NodePorts allow external IP:Port access to containers that are running inside a Kubernetes cluster.
-
-To create multiple instances of an ONAP deployment in the cluster, use the following commands::
-  
-  oom/kubernetes/config/createConfig.sh -n onap
-  
-  oom/kubernetes/oneclick/createAll.bash -n onap -i 2
-  
-Where:
-
-* 'onap' refers to the name of the instance.
-* ‘i 2’ refers to the number of instances of an ONAP deployment in the cluster.
-
-To delete a deployed instance
------------------------------
-
-To delete a deployed instance, use the following command::
-  
-  oom/kubernetes/oneclick/deleteAll.bash -n onap
-  
-**Note**: Deleting the runtime containers does not remove the configuration created in step 2.
-
-For more information on OOM project documentation, refer to `Quick Start Guide on Wiki  <https://wiki.onap.org/display/DW/ONAP+Operations+Manager+Project#ONAPOperationsManagerProject-QuickStartGuide>`__.
-
-Demo Video
-----------
-
-If you'd like to see the installation of ONAP by OOM take a look at this
-short video demonstration by Mike Elliott: 
-
-.. raw:: html
-
-   <video controls src="_static/OOM_Demo.mp4"></video>
-
-
-OOM Architecture and Technical Details
-======================================
-
-OOM uses the \ `Kubernetes  <http://kubernetes.io/>`__\ container
-management system to orchestrate the life cycle of the ONAP
-infrastructure components.  If you'd like to learn more about how this
-works or develop the deployment specifications for a project not already
-managed by OOM look here: \ `OOM User
-Guide <http://onap.readthedocs.io/en/latest/submodules/oom.git/docs/OOM%20User%20Guide/oom_user_guide.html>`__.
-
-
-Links to Further Information
-============================
-
--  Configuration data for all of the ONAP sub-projects is distributed by
-   OOM.  For more information on how this is done see: \ `OOM
-   Configuration Management <https://wiki.onap.org/display/DW/OOM+Configuration+Management>`__.
diff --git a/docs/OOM User Guide/oom_user_guide.rst b/docs/OOM User Guide/oom_user_guide.rst
deleted file mode 100644
index 00ebccb..0000000
--- a/docs/OOM User Guide/oom_user_guide.rst
+++ /dev/null
@@ -1,956 +0,0 @@
-.. This work is licensed under a Creative Commons Attribution 4.0 International License.
-
-OOM User Guide
-##############
-.. contents::
-   :depth: 3
-..
-
-Introduction
-============
-
-The ONAP Operations Manager (OOM) is responsible for life-cycle
-management of the ONAP platform itself; components such as SO, SDNC,
-etc. It is not responsible for the management of services, VNFs or
-infrastructure instantiated by ONAP or used by ONAP to host such
-services or VNFs. OOM uses the open source Kubernetes container
-management system as a means to manage the Docker containers that
-compose ONAP where the containers are hosted either directly on
-bare-metal servers or on VMs hosted by a 3rd party management system.
-OOM ensures that ONAP is easily deployable and maintainable throughout
-its life cycle while using hardware resources efficiently. There are two
-deployment options for OOM:
-
--  *A minimal deployment* where single instances of the ONAP components
-   are instantiated with no resource reservations, and
-
--  | *A production deployment* where ONAP components are deployed with
-     redundancy and anti-affinity rules such that single faults do not
-     interrupt ONAP operation.
-   | When deployed as containers directly on bare-metal, the minimal
-     deployment option requires a single host (32GB memory with 12
-     vCPUs) however further optimization should allow this deployment to
-     target a laptop computer. Production deployments will require more
-     resources as determined by anti-affinity and geo-redundancy
-     requirements.
-
-**OOM deployments of ONAP provide many benefits:**
-
--  *Life-cycle management*. Kubernetes is a comprehensive system for
-   managing the life-cycle of containerized applications. Its use as a
-   platform manager will ease the deployment of ONAP, provide fault
-   tolerance and horizontal scalability, and enable seamless upgrades.
-
--  *Hardware Efficiency*. ONAP can be deployed on a single host using less
-   than 32GB of memory. As opposed to VMs that require a guest operating
-   system be deployed along with the application, containers provide
-   similar application encapsulation with neither the computing, memory
-   and storage overhead nor the associated long term support costs of
-   those guest operating systems. An informal goal of the project is to
-   be able to create a development deployment of ONAP that can be hosted
-   on a laptop.
-
--  *Rapid deployment*. With locally cached images, ONAP can be deployed from
-   scratch in 7 minutes. Eliminating the guest operating system results
-   in containers coming into service much faster than a VM equivalent.
-   This advantage can be particularly useful for ONAP where rapid
-   reaction to inevitable failures will be critical in production
-   environments.
-
--  *Portability*. OOM takes advantage of Kubernetes' ability to be hosted
-   on multiple hosted cloud solutions like Google Compute Engine, AWS
-   EC2, Microsoft Azure, CenturyLink Cloud, IBM Bluemix and more.
-
--  *Minimal impact*. As ONAP is already deployed with Docker containers
-   minimal changes are required to the components themselves when
-   deployed with OOM.
-
-**Features of OOM:**
-
--  *Platform Deployment*. Automated deployment/un-deployment of ONAP
-   instance(s) / automated deployment/un-deployment of individual
-   platform components using Docker containers & Kubernetes.
-
--  *Platform Monitoring & Healing*. Monitor platform state, platform health
-   checks, fault tolerance and self-healing using Docker containers &
-   Kubernetes.
-
--  *Platform Scaling*. Platform horizontal scalability through using Docker
-   containers & Kubernetes.
-
--  *Platform Upgrades*. Platform upgrades using Docker containers &
-   Kubernetes.
-
--  *Platform Configurations*. Manage overall platform components
-   configurations using Docker containers & Kubernetes.
-
--  | *Platform migrations*. Manage migration of platform components using
-     Docker containers & Kubernetes.
-   | Please note that the ONAP Operations Manager does not provide
-     support for containerization of services or VNFs that are managed
-     by ONAP; the OOM orchestrates the life-cycle of the ONAP platform
-     components themselves.
-
-Container Background
---------------------
-
-Linux containers allow for an application and all of its operating
-system dependencies to be packaged and deployed as a single unit without
-including a guest operating system as done with virtual machines. The
-most popular container solution
-is \ `Docker <https://www.docker.com/>`__ which provides tools for
-container management like the Docker Host (dockerd) which can create,
-run, stop, move, or delete a container. Docker has a very popular
-registry of containers images that can be used by any Docker system;
-however, in the ONAP context, Docker images are built by the standard
-CI/CD flow and stored
-in \ `Nexus <https://nexus.onap.org/#welcome>`__ repositories. OOM uses
-the "standard" ONAP docker containers and three new ones specifically
-created for OOM.
-
-Containers are isolated from each other primarily via name spaces within
-the Linux kernel without the need for multiple guest operating systems.
-As such, multiple containers can be deployed with little overhead such
-as all of ONAP can be deployed on a single host. With some optimization
-of the ONAP components (e.g. elimination of redundant database
-instances) it may be possible to deploy ONAP on a single laptop
-computer.
-
-Life Cycle Management via Kubernetes
-====================================
-
-As with the VNFs deployed by ONAP, the components of ONAP have their own
-life-cycle where the components are created, run, healed, scaled,
-stopped and deleted. These life-cycle operations are managed by
-the \ `Kubernetes <https://kubernetes.io/>`__ container management
-system which maintains the desired state of the container system as
-described by one or more deployment descriptors - similar in concept to
-OpenStack Heat Orchestration Templates. The following sections describe
-the fundamental objects managed by Kubernetes, the network these
-components use to communicate with each other and other entities outside
-of ONAP and the templates that describe the configuration and desired
-state of the ONAP components.
-
-ONAP Components to Kubernetes Object Relationships
---------------------------------------------------
-
-Kubernetes deployments consist of multiple objects:
-
--  nodes - a worker machine - either physical or virtual - that hosts
-   multiple containers managed by Kubernetes.
-
--  services - an abstraction of a logical set of pods that provide a
-   micro-service.
-
--  pods - one or more (but typically one) container(s) that provide
-   specific application functionality. 
-
--  persistent volumes - One or more permanent volumes need to be
-   established to hold non-ephemeral configuration and state data.
-
-The relationship between these objects is shown in the following figure:
-
-.. figure:: ../kubernetes_objects.png
-
-OOM uses these Kubernetes objects as described in the following
-sections.
-
-Nodes
-~~~~~
-
-OOM works with both physical and virtual worker machines.  
-
--  Virtual Machine Deployments - If ONAP is to be deployed onto a set of
-   virtual machines, the creation of the VMs is outside of the scope of
-   OOM and could be done in many ways, such as:
-
-   -  manually, for example by a user using the OpenStack Horizon
-      dashboard or `AWS
-      EC2 <https://wiki.onap.org/display/DW/ONAP+on+AWS#ONAPonAWS-Option0:DeployOOMKubernetestoaspotVM>`__,
-      or
-
-   -  automatically, for example with the use of a OpenStack Heat
-      Orchestration Template which builds an ONAP stack, or
-
-   -  orchestrated, for example with Cloudify creating the VMs from a
-      TOSCA template and controlling their life cycle for the life of
-      the ONAP deployment.
-
--  Physical Machine Deployments - If ONAP is to be deployed onto
-   physical machines there are several options but the recommendation is
-   to use
-   `Rancher <http://rancher.com/docs/rancher/v1.6/en/quick-start-guide/>`__
-   along with `Helm <https://github.com/kubernetes/helm/releases>`__ to
-   associate hosts with a Kubernetes cluster.
-
-Pods
-~~~~
-
-A group of containers with shared storage and networking can be grouped
-together into a Kubernetes pod.  All of the containers within a pod are
-co-located and co-scheduled so they operate as a single unit.  Within
-ONAP Amsterdam release, pods are mapped one-to-one to Docker containers
-although this may change in the future.  As explained in the Services
-section below the use of Pods within each ONAP component is abstracted
-from other ONAP components.
-
-Services
-~~~~~~~~
-
-OOM uses the Kubernetes service abstraction to provide a consistent
-access point for each of the ONAP components independent of the pod or
-container architecture of that component. For example, the SDNC
-component may introduce OpenDaylight clustering as some point and change
-the number of pods in this component to three or more but this change
-will be isolated from the other ONAP components by the service
-abstraction. A service can include a load balancer on its ingress to
-distribute traffic between the pods and even react to dynamic changes in
-the number of pods if they are part of a replica set (see the MSO
-example below for a brief explanation of replica sets).
-
-Persistent Volumes
-~~~~~~~~~~~~~~~~~~
-
-As pods and containers are ephemeral, any data that must be persisted
-across pod restart events needs to be stored outside of the pod in a
-persistent volume(s). Kubernetes supports a wide variety of types of
-persistent volumes such as: Fibre Channel, NFS, iSCSI, CephFS, and
-GlusterFS (for a full list look
-`here <https://kubernetes.io/docs/concepts/storage/persistent-volumes/#types-of-persistent-volumes>`__)
-so there are many options as to how storage is configured when deploying
-ONAP via OOM.
-
-OOM Networking with Kubernetes
-------------------------------
-
--  DNS
-
--  Ports - Flattening the containers also expose port conflicts between
-   the containers which need to be resolved.
-
-Name Spaces
-~~~~~~~~~~~
-
-Within the namespaces are Kubernete's services that provide external
-connectivity to pods that host Docker containers. The following is a
-list of the namespaces and the services within:
-
--  onap-aai
-
-   -  aai-service
-
-   -  *hbase*
-
-   -  model-loader-service
-
-   -  aai-resources
-
-   -  aai-traversal
-
-   -  data-router
-
-   -  elasticsearch
-
-   -  gremlin
-
-   -  search-data-service
-
-   -  sparky-be
-
--  onap-appc
-
-   -  appc
-
-   -  *appc-dbhost*
-
-   -  appc-dgbuilder
-
--  clamp
-
-   - clamp
-
-   - clamp-mariadb
-
-
--  onap-dcae
-
-   -  cdap0
-
-   -  cdap1
-
-   -  cdap2
-
-   -  dcae-collector-common-event
-
-   -  dcae-collector-dmaapbc
-
-   -  dcae-controller
-
-   -  dcae-pgaas
-
-   -  dmaap
-
-   -  kafka
-
-   -  zookeeper
-
--  onap-message-router
-
-   -  dmaap
-
-   -  *global-kafka*
-
-   -  *zookeeper*
-
--  onap-mso
-
-   -  mso
-
-   -  *mariadb*
-
--  onap-multicloud
-
-   - multicloud-vio
-
-   - framework
-
--  onap-policy
-
-   -  brmsgw
-
-   -  drools
-
-   -  *mariadb*
-
-   -  *nexus*
-
-   -  pap
-
-   -  pdp
-
--  onap-portal
-
-   -  portalapps
-
-   -  *portaldb*
-
-   - portalwidgets
-
-   -  vnc-portal
-
--  onap-robot
-
-   -  robot
-
--  onap-sdc
-
-   -  sdc-be
-
-   -  *sdc-cs*
-
-   -  *sdc-es*
-
-   -  sdc-fe
-
-   -  *sdc-kb*
-
--  onap-sdnc
-
-   -  sdnc
-
-   -  *sdnc-dbhost*
-
-   -  sdnc-dgbuilder
-
-   -  sdnc-portal
-
--  onap-vid
-
-   -  *vid-mariadb*
-
-   -  vid-server
-
-Note that services listed in \ *italics* are local to the namespace
-itself and not accessible from outside of the namespace.
-
-Kubernetes Deployment Specifications for ONAP
----------------------------------------------
-
-Each of the ONAP components are deployed as described in a deployment
-specification.  This specification documents key parameters and
-dependencies between the pods of an ONAP components such that Kubernetes
-is able to repeatably startup the component. The components artifacts
-are stored here in the oom/kubernetes repo in \ `ONAP
-gerrit <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes;h=4597d09dbce86d7543174924322435c30cb5b0ee;hb=refs/heads/master>`__.
-The mso project is a relatively simple example, so let's start there.
-
-MSO Example
-~~~~~~~~~~~
-
-Within
-the \ `oom/kubernetes/templates/mso <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/templates/mso;h=d8b778a16381d6695f635c14b9dcab72fb9fcfcd;hb=refs/heads/master>`__ repo,
-one will find four files in yaml format:
-
--  `all-services.yaml <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob_plain;f=kubernetes/mso/templates/all-services.yaml;hb=refs/heads/master>`__
-
--  `db-deployment.yaml <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob_plain;f=kubernetes/mso/templates/db-deployment.yaml;hb=refs/heads/master>`__
-
--  `mso-deployment.yaml <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob_plain;f=kubernetes/mso/templates/db-deployment.yaml;hb=refs/heads/master>`__
-
--  `mso-pv-pvc.yaml <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob_plain;f=kubernetes/mso/templates/mso-pv-pvc.yaml;hb=refs/heads/master>`__
-
-The db-deployment.yaml file describes deployment of the database
-component of mso.  Here is the contents:
-
-**db-deployment.yaml**::
-
-  apiVersion: extensions/v1beta1
-  kind: Deployment
-  metadata:
-    name: mariadb
-    namespace: "{{ .Values.nsPrefix }}-mso"
-  spec:
-    replicas: 1
-    selector:
-      matchLabels:
-        app: mariadb
-    template:
-      metadata:
-        labels:
-          app: mariadb
-        name: mariadb
-      spec:
-        hostname: mariadb
-        containers:
-        - args:
-          image: {{ .Values.image.mariadb }}
-          imagePullPolicy: {{ .Values.pullPolicy }}
-          name: "mariadb"
-          env:
-            - name: MYSQL_ROOT_PASSWORD
-              value: password
-            - name: MARIADB_MAJOR
-              value: "10.1"
-            - name: MARIADB_VERSION
-              value: "10.1.11+maria-1~jessie"
-          volumeMounts:
-          - mountPath: /etc/localtime
-            name: localtime
-            readOnly: true
-          - mountPath: /etc/mysql/conf.d
-            name: mso-mariadb-conf
-          - mountPath: /docker-entrypoint-initdb.d
-            name: mso-mariadb-docker-entrypoint-initdb
-          - mountPath: /var/lib/mysql
-            name: mso-mariadb-data
-          ports:
-          - containerPort: 3306
-            name: mariadb
-          readinessProbe:
-            tcpSocket:
-              port: 3306
-            initialDelaySeconds: 5
-            periodSeconds: 10
-        volumes:
-          - name: localtime
-            hostPath:
-              path: /etc/localtime
-          - name: mso-mariadb-conf
-            hostPath:
-              path: /dockerdata-nfs/{{ .Values.nsPrefix }}/mso/mariadb/conf.d
-          - name: mso-mariadb-docker-entrypoint-initdb
-            hostPath:
-              path: /dockerdata-nfs/{{ .Values.nsPrefix }}/mso/mariadb/docker-entrypoint-initdb.d
-          - name: mso-mariadb-data
-            persistentVolumeClaim:
-              claimName: mso-db
-        imagePullSecrets:
-        - name: "{{ .Values.nsPrefix }}-docker-registry-key"
-
-
-The first part of the yaml file simply states that this is a deployment
-specification for a mariadb pod.
-
-The spec section starts off with 'replicas: 1' which states that only 1
-'replica' will be use here.  If one was to change the number of replicas
-to 3 for example, Kubernetes would attempt to ensure that three replicas
-of this pod are operational at all times. One can see that in a
-clustered environment the number of replicas should probably be more
-than 1 but for simple deployments 1 is sufficient.
-
-The selector label is a grouping primitive of Kubernetes but this simple
-example doesn't exercise it's full capabilities.
-
-The template/spec section is where the key information required to start
-this pod is found.
-
--  image: is a reference to the location of the Docker image in nexus3
-
--  name: is the name of the Docker image
-
--  env is a section supports the creation of operating system
-   environment variables within the container and are specified as a set
-   of key/value pairs.  For example, MYSQL\_ROOT\_PASSWORD is set to
-   "password".
-
--  volumeMounts: allow for the creation of custom mount points
-
--  ports: define the networking ports that will be opened on the
-   container.  Note that further in the all-services.yaml file ports
-   that are defined here can be exposed outside of ONAP component's name
-   space by creating a 'nodePort' - a mechanism used to resolve port
-   duplication.
-
--  readinessProbe: is the mechanism Kubernetes uses to determine the
-   state of the container. 
-
--  volumes: a location to define volumes required by the container, in
-   this case configuration and initialization information.
-
--  imagePullSecrets: an key to access the nexus3 repo when pulling
-   Docker containers.
-
-As one might image, the mso-deployment.yaml file describes the
-deployment artifacts of the mso application.  Here are the contents:
-
-**mso-deployment.yaml**::
-
-  apiVersion: extensions/v1beta1
-  kind: Deployment
-  metadata:
-    name: mso
-    namespace: "{{ .Values.nsPrefix }}-mso"
-  spec:
-    replicas: 1
-    selector:
-      matchLabels:
-        app: mso
-    template:
-      metadata:
-        labels:
-          app: mso
-        name: mso
-        annotations:
-          pod.beta.kubernetes.io/init-containers: '[
-            {
-                "args": [
-                    "--container-name",
-                    "mariadb"
-                ],
-                "command": [
-                    "/root/ready.py"
-                ],
-                "env": [
-                    {
-                        "name": "NAMESPACE",
-                        "valueFrom": {
-                            "fieldRef": {
-                                "apiVersion": "v1",
-                                "fieldPath": "metadata.namespace"
-                            }
-                        }
-                    }
-                ],
-                "image": "{{ .Values.image.readiness }}",
-                "imagePullPolicy": "{{ .Values.pullPolicy }}",
-                "name": "mso-readiness"
-            }
-            ]'
-      spec:
-        containers:
-        - command:
-          - /docker-files/scripts/start-jboss-server.sh
-          image: {{ .Values.image.mso }}
-          imagePullPolicy: {{ .Values.pullPolicy }}
-          name: mso
-          volumeMounts:
-          - mountPath: /etc/localtime
-            name: localtime
-            readOnly: true
-          - mountPath: /shared
-            name: mso
-          - mountPath: /docker-files
-            name: mso-docker-files
-          env:
-          - name: JBOSS_DEBUG
-            value: "false"
-          ports:
-          - containerPort: 3904
-          - containerPort: 3905
-          - containerPort: 8080
-          - containerPort: 9990
-          - containerPort: 8787
-          readinessProbe:
-            tcpSocket:
-              port: 8080
-            initialDelaySeconds: 5
-            periodSeconds: 10
-        volumes:
-          - name: localtime
-            hostPath:
-              path: /etc/localtime
-          - name: mso
-            hostPath:
-              path: /dockerdata-nfs/{{ .Values.nsPrefix }}/mso/mso
-          - name: mso-docker-files
-            hostPath:
-              path: /dockerdata-nfs/{{ .Values.nsPrefix }}/mso/docker-files
-        imagePullSecrets:
-        - name: "{{ .Values.nsPrefix }}-docker-registry-key"
-
-Much like the db deployment specification the first and last part of
-this yaml file describe meta-data, replicas, images, volumes, etc.  The
-template section has an important new functionality though, a deployment
-specification for a new "initialization" container .  The entire purpose
-of the init-container is to allow dependencies to be resolved in an
-orderly manner such that the entire ONAP system comes up every time.
-Once the dependencies are met and the init-containers job is complete,
-this container will terminate.  Therefore, when OOM starts up ONAP one
-is able to see a number of init-containers start and then disappear as
-the system stabilizes. Note that more than one init-container may be
-specified, each completing before starting the next, if complex startup
-relationships need to be specified.
-
-In this particular init-container, the command '/root/ready.py' will be
-executed to determine when mariadb is ready, but this could be a simple
-bash script. The image/name section describes where and how to get the
-Docker image from the init-container.
-
-To ensure that data isn't lost when an ephemeral container undergoes
-life-cycle events (like being restarted), non-volatile or persistent
-volumes can be attached to the service.  The following pv-pvc.yaml
-file defines the persistent volume as 2 GB storage claimed by the
-mso namespace.
-
-**pv-pvc.yaml**::
-
-  apiVersion: v1
-  kind: PersistentVolume
-  metadata:
-    name: "{{ .Values.nsPrefix }}-mso-db"
-    namespace: "{{ .Values.nsPrefix }}-mso"
-    labels:
-      name: "{{ .Values.nsPrefix }}-mso-db"
-  spec:
-    capacity:
-      storage: 2Gi
-    accessModes:
-      - ReadWriteMany
-    persistentVolumeReclaimPolicy: Retain
-    hostPath:
-      path: /dockerdata-nfs/{{ .Values.nsPrefix }}/mso/mariadb/data
-  ---
-  kind: PersistentVolumeClaim
-  apiVersion: v1
-  metadata:
-    name: mso-db
-    namespace: "{{ .Values.nsPrefix }}-mso"
-  spec:
-    accessModes:
-      - ReadWriteMany
-    resources:
-      requests:
-        storage: 2Gi
-    selector:
-      matchLabels:
-        name: "{{ .Values.nsPrefix }}-mso-db"
-
-The last of the four files is the all-services.yaml file which defines
-the Kubernetes service(s) that will be exposed in this name space. Here
-is the contents of the file:
-
-**all-services.yaml**::
-
-  apiVersion: v1
-  kind: Service
-  metadata:
-    name: mariadb
-    namespace: "{{ .Values.nsPrefix }}-mso"
-    labels:
-      app: mariadb
-  spec:
-    ports:
-      - port: 3306
-        nodePort: {{ .Values.nodePortPrefix }}52
-    selector:
-      app: mariadb
-    type: NodePort
-  ---
-  apiVersion: v1
-  kind: Service
-  metadata:
-    name: mso
-    namespace: "{{ .Values.nsPrefix }}-mso"
-    labels:
-      app: mso
-    annotations:
-      msb.onap.org/service-info: '[
-        {
-            "serviceName": "so",
-            "version": "v1",
-            "url": "/ecomp/mso/infra",
-            "protocol": "REST"
-            "port": "8080",
-            "visualRange":"1"
-        },
-        {
-            "serviceName": "so-deprecated",
-            "version": "v1",
-            "url": "/ecomp/mso/infra",
-            "protocol": "REST"
-            "port": "8080",
-            "visualRange":"1",
-            "path":"/ecomp/mso/infra"
-        }
-        ]'
-  spec:
-    selector:
-      app: mso
-    ports:
-      - name: mso1
-        port: 8080
-        nodePort: {{ .Values.nodePortPrefix }}23
-      - name: mso2
-        port: 3904
-        nodePort: {{ .Values.nodePortPrefix }}25
-      - name: mso3
-        port: 3905
-        nodePort: {{ .Values.nodePortPrefix }}24
-      - name: mso4
-        port: 9990
-        nodePort: {{ .Values.nodePortPrefix }}22
-      - name: mso5
-        port: 8787
-        nodePort: {{ .Values.nodePortPrefix }}50
-    type: NodePort
-
-First of all, note that this file is really two service specification in
-a single file: the mariadb service and the mso service. In some
-circumstances it may be possible to hide some of the complexity of the
-containers/pods by hiding them behind a single service.
-
-The mariadb service specification is quite simple; other than the name
-the only section of interest is the nodePort specification. When
-containers require exposing ports to the world outside of a Kubernetes
-namespace, there is a potential for port conflict. To resolve this
-potential port conflict Kubernetes uses the concept of a nodePort that
-is mapped one-to-one with a port within the namespace. In this case the
-port 3306 (which was defined in the db-deployment.yaml file) is mapped
-to 30252 externally thus avoiding the conflict that would have arisen
-from deployment multiple mariadb containers.
-
-The mso service definition is largely the same as the mariadb service
-with the exception that the ports are named.
-
-Customizing Deployment Specifications
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-For each ONAP component deployed by OOM, a set of deployment
-specifications are required.  Use fortunately there are many examples to
-use as references such that the previous
-'`mso <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/mso;h=d8b778a16381d6695f635c14b9dcab72fb9fcfcd;hb=refs/heads/master>`__'
-example, as well as:
-`aai <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/aai;h=243ff90da714459a07fa33023e6655f5d036bfcd;hb=refs/heads/master>`__,
-`appc <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/appc;h=d34eaca8a17fc28033a491d3b71aaa1e25673f9e;hb=refs/heads/master>`__,
-`message-router <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/message-router;h=51fcb23fb7fbbfab277721483d01c6e3f98ca2cc;hb=refs/heads/master>`__,
-`policy <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/policy;h=8c29597b23876ea2ae17dbf747f4ab1e3b955dd9;hb=refs/heads/master>`__,
-`portal <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/portal;h=371db03ddef92703daa699014e8c1c9623f7994d;hb=refs/heads/master>`__,
-`robot <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/robot;h=46445652d43d93dc599c5108f5c10b303a3c777b;hb=refs/heads/master>`__,
-`sdc <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/sdc;h=1d59f7b5944d4604491e72d0b6def0ff3f10ba4d;hb=refs/heads/master>`__,
-`sdnc <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/sdnc;h=dbaab2ebd62190edcf489b5a5f1f52992847a73a;hb=refs/heads/master>`__
-and
-`vid <https://gerrit.onap.org/r/gitweb?p=oom.git;a=tree;f=kubernetes/vid;h=e91788c8504f2da12c086e802e1e7e8648418c66;hb=refs/heads/master>`__.
-If your components isn't already deployed by OOM, you can create your
-own set of deployment specifications that can be easily added to OOM.
-
-Development Deployments
-~~~~~~~~~~~~~~~~~~~~~~~
-
-For the Amsterdam release, the deployment specifications represent a
-simple simplex deployment of ONAP that may not have the robustness
-typically required of a full operational deployment. Follow on releases
-will enhance these deployment specifications as follows:
-
--  Load Balancers - Kubernetes has built in support for user defined or
-   simple 'ingress' load balances at the service layer to hide the
-   complexity of multi-pod deployments from other components.
-
--  Horizontal Scaling - replica sets can be used to dynamically scale
-   the number of pods behind a service to that of the offered load.
-
--  Stateless Pods - using concepts such as DBaaS (database as a service)
-   database technologies could be removed (where appropriate) from the
-   services thus moving to the 'cattle' model so common in cloud
-   deployments.
-
-Kubernetes Under-Cloud Deployments
-==================================
-
-The automated ONAP deployment depends on a fully functional Kubernetes
-environment being available prior to ONAP installation. Fortunately,
-Kubenetes is supported on a wide variety of systems such as Google
-Compute Engine, `AWS
-EC2 <https://wiki.onap.org/display/DW/ONAP+on+AWS#ONAPonAWS-Option0:DeployOOMKubernetestoaspotVM>`__,
-Microsoft Azure, CenturyLink Cloud, IBM Bluemix and more.  If you're
-setting up your own Kubernetes environment, please refer to \ `ONAP on
-Kubernetes <file:///C:\display\DW\ONAP+on+Kubernetes>`__ for a walk
-through of how to set this environment up on several platforms.
-
-ONAP 'OneClick' Deployment Walk-though
-======================================
-
-Once a Kubernetes environment is available and the deployment artifacts
-have been customized for your location, ONAP is ready to be installed. 
-
-The first step is to setup
-the \ `/oom/kubernetes/config/onap-parameters.yaml <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/onap-parameters.yaml;h=7ddaf4d4c3dccf2fad515265f0da9c31ec0e64b1;hb=refs/heads/master>`__ file
-with key-value pairs specific to your OpenStack environment.  There is
-a \ `sample  <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/onap-parameters-sample.yaml;h=3a74beddbbf7f9f9ec8e5a6abaecb7cb238bd519;hb=refs/heads/master>`__\ that
-may help you out or even be usable directly if you don't intend to
-actually use OpenStack resources. Here is the contents of this file:
-
-**onap-parameters-sample.yaml**::
-
-  OPENSTACK_UBUNTU_14_IMAGE: "Ubuntu_14.04.5_LTS"
-  OPENSTACK_PUBLIC_NET_ID: "e8f51956-00dd-4425-af36-045716781ffc"
-  OPENSTACK_OAM_NETWORK_ID: "d4769dfb-c9e4-4f72-b3d6-1d18f4ac4ee6"
-  OPENSTACK_OAM_SUBNET_ID: "191f7580-acf6-4c2b-8ec0-ba7d99b3bc4e"
-  OPENSTACK_OAM_NETWORK_CIDR: "192.168.30.0/24"
-  OPENSTACK_USERNAME: "vnf_user"
-  OPENSTACK_API_KEY: "vnf_password"
-  OPENSTACK_TENANT_NAME: "vnfs"
-  OPENSTACK_REGION: "RegionOne"
-  OPENSTACK_KEYSTONE_URL: "http://1.2.3.4:5000"
-  OPENSTACK_FLAVOUR_MEDIUM: "m1.medium"
-  OPENSTACK_SERVICE_TENANT_NAME: "services"
-  DMAAP_TOPIC: "AUTO"
-  DEMO_ARTIFACTS_VERSION: "1.1.0-SNAPSHOT"
-
-Note that these values are required or the following steps will fail.
-
-In-order to be able to support multiple ONAP instances within a single
-Kubernetes environment a configuration set is required. The
-`createConfig.sh <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/createConfig.sh;h=f226ccae47ca6de15c1da49be4b8b6de974895ed;hb=refs/heads/master>`__
-script is used to do this.
-
-**createConfig.sh**::
-
-  > ./createConfig.sh -n onapTrial
-
-The bash
-script \ `createAll.bash <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/oneclick/createAll.bash;h=5e5f2dc76ea7739452e757282e750638b4e3e1de;hb=refs/heads/master>`__ is
-used to create an ONAP deployment with Kubernetes. It has two primary
-functions:
-
--  Creating the namespaces used to encapsulate the ONAP components, and
-
--  Creating the services, pods and containers within each of these
-   namespaces that provide the core functionality of ONAP.
-
-**createAll.bash**::
-
-  > ./createAll.bash -n onapTrial
-
-Namespaces provide isolation between ONAP components as ONAP release 1.0
-contains duplicate application (e.g. mariadb) and port usage. As
-such createAll.bash requires the user to enter a namespace prefix string
-that can be used to separate multiple deployments of onap. The result
-will be set of 10 namespaces (e.g. onapTrial-sdc, onapTrial-aai,
-onapTrial-mso, onapTrial-message-router, onapTrial-robot, onapTrial-vid,
-onapTrial-sdnc, onapTrial-portal, onapTrial-policy, onapTrial-appc)
-being created within the Kubernetes environment. A prerequisite pod
-config-init (\ `pod-config-init.yaml <https://gerrit.onap.org/r/gitweb?p=oom.git;a=blob;f=kubernetes/config/pod-config-init.yaml;h=b1285ce21d61815c082f6d6aa3c43d00561811c7;hb=refs/heads/master>`__)
-may editing to match you environment and deployment into the default
-namespace before running createAll.bash.
-
-Integration with MSB
-====================
-
-The \ `Microservices Bus
-Project <https://wiki.onap.org/pages/viewpage.action?pageId=3246982>`__ provides
-facilities to integrate micro-services into ONAP and therefore needs to
-integrate into OOM - primarily through Consul which is the backend of
-MSB service discovery. The following is a brief description of how this
-integration will be done:
-
-A registrator to push the service endpoint info to MSB service
-discovery. 
-
--  The needed service endpoint info is put into the Kubernetes YAML file
-   as annotation, including service name, Protocol,version, visual
-   range,LB method, IP, Port,etc.
-
--  OOM deploy/start/restart/scale in/scale out/upgrade ONAP components
-
--  Registrator watch the Kubernetes event
-
--  When an ONAP component instance has been started/destroyed by OOM,
-   Registrator get the notification from Kubernetes
-
--  Registrator parse the service endpoint info from annotation and
-   register/update/unregister it to MSB service discovery
-
--  MSB API Gateway uses the service endpoint info for service routing
-   and load balancing.
-
-Details of the registration service API can be found at \ `Microservice
-Bus API
-Documentation <https://wiki.onap.org/display/DW/Microservice+Bus+API+Documentation>`__.
-
-How to define the service endpoints using annotation \ `ONAP Services
-List#OOMIntegration <https://wiki.onap.org/display/DW/ONAP+Services+List#ONAPServicesList-OOMIntegration>`__
-
-A preliminary view of the OOM-MSB integration is as follows:
-
-.. figure:: ../MSB-OOM-Diagram.png
-
-A message sequence chart of the registration process:
-
-.. figure:: ../MSB-OOM-MSC.png
-
-MSB Usage Instructions
-----------------------
-MSB provides Kubernetes charts in OOM, so it can be spun up by oom oneclick command.
-
-Please note that Kubernetes authentication token must be set at *kubernetes/kube2msb/values.yaml* so the kube2msb registrator can get the access to watch the Kubernetes events and get service annotation by Kubernetes APIs. The token can be found in the kubectl configuration file *~/.kube/config*
-
-MSB and kube2msb can be spun up with all the ONAP components together, or separately using the following commands.
-
-**Start MSB services**::
-
-  createAll.bash -n onap -a msb
-
-**Start kube2msb registrator**::
-
-  createAll.bash -n onap -a kube2msb
-
-More details can be found here `MSB installation <http://onap.readthedocs.io/en/latest/submodules/msb/apigateway.git/docs/platform/installation.html>`__.
-
-FAQ (Frequently Asked Questions)
-================================
-
-Does OOM enable the deployment of VNFs on containers?
-
--  No. OOM provides a mechanism to instantiate and manage the ONAP
-   components themselves with containers but does not provide a
-   Multi-VIM capability such that VNFs can be deployed into containers.
-   The Multi VIM/Cloud Project may provide this functionality at some point.
-
-Configuration Parameters
-========================
-
-Configuration parameters that are specific to the ONAP deployment, for example
-hard coded IP addresses, are parameterized and stored in a OOM specific
-set of configuration files.
-
-More information about ONAP configuration can be found in the Configuration Management
-section.
-
-References
-==========
-
--  Docker - http://docker.com
-
--  Kubernetes - http://kubernetes.io
-
--  Helm - https://helm.sh
diff --git a/docs/environments_onap_demo.yaml b/docs/environments_onap_demo.yaml
new file mode 100644
index 0000000..9846e37
--- /dev/null
+++ b/docs/environments_onap_demo.yaml
@@ -0,0 +1,103 @@
+#################################################################
+# Global configuration overrides.
+#
+# These overrides will affect all helm charts (ie. applications)
+# that are listed below and are 'enabled'.
+#################################################################
+global:
+  # Change to an unused port prefix range to prevent port conflicts
+  # with other instances running within the same k8s cluster
+  nodePortPrefix: 302
+
+  # image repositories
+  repository: nexus3.onap.org:10001
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  # readiness check
+  readinessRepository: oomk8s
+  # logging agent
+  loggingRepository: docker.elastic.co
+
+  # image pull policy
+  pullPolicy: IfNotPresent
+
+  # override default mount path root directory
+  # referenced by persistent volumes and log files
+  persistence:
+    mountPath: /dockerdata
+
+  # flag to enable debugging - application support required
+  debugEnabled: true
+
+#################################################################
+# Enable/disable and configure helm charts (ie. applications)
+# to customize the ONAP deployment.
+#################################################################
+aaf:
+  enabled: false
+aai:
+  enabled: false
+appc:
+  enabled: false
+clamp:
+  enabled: true
+cli:
+  enabled: false
+consul: # Consul Health Check Monitoring
+  enabled: false
+dcaegen2:
+  enabled: false
+esr:
+  enabled: false
+log:
+  enabled: false
+message-router:
+  enabled: false
+mock:
+  enabled: false
+msb:
+  enabled: false
+multicloud:
+  enabled: false
+policy:
+  enabled: false
+portal:
+  enabled: false
+robot: # Robot Health Check
+  enabled: true
+sdc:
+  enabled: false
+sdnc:
+  enabled: false
+so: # Service Orchestrator
+  enabled: true
+
+  replicaCount: 1
+
+  liveness:
+    # necessary to disable liveness probe when setting breakpoints
+    # in debugger so K8s doesn't restart unresponsive container
+    enabled: true
+
+  # so server configuration
+  config:
+    # message router configuration
+    dmaapTopic: "AUTO"
+    # openstack configuration
+    openStackUserName: "vnf_user"
+    openStackRegion: "RegionOne"
+    openStackKeyStoneUrl: "http://1.2.3.4:5000"
+    openStackServiceTenantName: "service"
+    openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e"
+
+  # configure embedded mariadb
+  mariadb:
+    config:
+      mariadbRootPassword: password
+uui:
+  enabled: false
+vfc:
+  enabled: false
+vid:
+  enabled: false
+vnfsdk:
+  enabled: false
diff --git a/docs/onap_values.yaml b/docs/onap_values.yaml
new file mode 100644
index 0000000..663b05f
--- /dev/null
+++ b/docs/onap_values.yaml
@@ -0,0 +1,104 @@
+#################################################################
+# Global configuration overrides.
+#
+# These overrides will affect all helm charts (ie. applications)
+# that are listed below and are 'enabled'.
+#################################################################
+global:
+  # Change to an unused port prefix range to prevent port conflicts
+  # with other instances running within the same k8s cluster
+  nodePortPrefix: 302
+
+  # image repositories
+  repository: nexus3.onap.org:10001
+  repositorySecret: eyJuZXh1czMub25hcC5vcmc6MTAwMDEiOnsidXNlcm5hbWUiOiJkb2NrZXIiLCJwYXNzd29yZCI6ImRvY2tlciIsImVtYWlsIjoiQCIsImF1dGgiOiJaRzlqYTJWeU9tUnZZMnRsY2c9PSJ9fQ==
+  # readiness check
+  readinessRepository: oomk8s
+  # logging agent
+  loggingRepository: docker.elastic.co
+
+  # image pull policy
+  pullPolicy: Always
+
+  # default mount path root directory referenced
+  # by persistent volumes and log files
+  persistence:
+    mountPath: /dockerdata-nfs
+
+  # flag to enable debugging - application support required
+  debugEnabled: false
+
+
+#################################################################
+# Enable/disable and configure helm charts (ie. applications)
+# to customize the ONAP deployment.
+#################################################################
+aaf:
+  enabled: true
+aai:
+  enabled: true
+appc:
+  enabled: true
+clamp:
+  enabled: true
+cli:
+  enabled: true
+consul: # Consul Health Check Monitoring
+  enabled: true
+dcaegen2:
+  enabled: true
+esr:
+  enabled: true
+log: # ONAP Logging ElasticStack
+  enabled: true
+message-router:
+  enabled: true
+mock:
+  enabled: true
+msb:
+  enabled: true
+multicloud:
+  enabled: true
+policy:
+  enabled: true
+portal:
+  enabled: true
+robot: # Robot Health Check
+  enabled: true
+sdc:
+  enabled: true
+sdnc:
+  enabled: true
+so: # Service Orchestrator
+  enabled: true
+
+  replicaCount: 1
+
+  liveness:
+    # necessary to disable liveness probe when setting breakpoints
+    # in debugger so K8s doesn't restart unresponsive container
+    enabled: true
+
+  # so server configuration
+  config:
+    # message router configuration
+    dmaapTopic: "AUTO"
+    # openstack configuration
+    openStackUserName: "vnf_user"
+    openStackRegion: "RegionOne"
+    openStackKeyStoneUrl: "http://1.2.3.4:5000"
+    openStackServiceTenantName: "service"
+    openStackEncryptedPasswordHere: "c124921a3a0efbe579782cde8227681e"
+
+  # configure embedded mariadb
+  mariadb:
+    config:
+      mariadbRootPassword: password
+uui:
+  enabled: true
+vfc:
+  enabled: true
+vid:
+  enabled: true
+vnfsdk:
+  enabled: true
diff --git a/docs/oom_quickstart_guide.rst b/docs/oom_quickstart_guide.rst
index 4e5f540..879bbb9 100644
--- a/docs/oom_quickstart_guide.rst
+++ b/docs/oom_quickstart_guide.rst
@@ -130,11 +130,7 @@
   vnfsdk:
     enabled: true
 
-**Step 3.** Build a local Helm repository (from the kubernetes directory)::
-
-  > make all
-
-**Step 4.** To setup a local Helm server to server up the ONAP charts::
+**Step 3.** To setup a local Helm server to server up the ONAP charts::
 
   > helm serve &
 
@@ -143,12 +139,16 @@
 
   > helm repo add local http://127.0.0.1:8879
 
-**Step 5.** Verify your Helm repository setup with::
+**Step 4.** Verify your Helm repository setup with::
 
   > helm repo list
   NAME   URL
   local  http://127.0.0.1:8879
 
+**Step 5.** Build a local Helm repository (from the kubernetes directory)::
+
+  > make all
+
 **Step 6.** Display the charts that available to be deployed::
 
   > helm search -l
diff --git a/docs/oom_user_guide.rst b/docs/oom_user_guide.rst
index b8e5d1b..97b2fde 100644
--- a/docs/oom_user_guide.rst
+++ b/docs/oom_user_guide.rst
@@ -70,10 +70,6 @@
   > git clone http://gerrit.onap.org/r/oom
   > cd kubernetes
 
-Then build your local Helm repository::
-
-  > make all
-
 To setup a local Helm server to server up the ONAP charts::
 
   > helm serve &
@@ -88,6 +84,10 @@
   NAME   URL
   local  http://127.0.0.1:8879
 
+Then build your local Helm repository::
+
+  > make all
+
 The Helm search command reads through all of the repositories configured on the
 system, and looks for matches::
 
diff --git a/kubernetes/Makefile b/kubernetes/Makefile
index 7ba5ba9..4962c82 100644
--- a/kubernetes/Makefile
+++ b/kubernetes/Makefile
@@ -47,17 +47,23 @@
 package-%: lint-%
 	@mkdir -p $(PACKAGE_DIR)
 	@if [ -f $*/Chart.yaml ]; then helm package -d $(PACKAGE_DIR) $*; fi
+	@helm repo index $(PACKAGE_DIR)
 
 clean:
 	@rm -f */requirements.lock
 	@rm -f *tgz */charts/*tgz
-	@rm -rf $(PACKAGE_DIR)
+	@rm -rf $(PACKAGE_DIR)/*
 
-# start up a local helm repo to serve up
+# start up a local helm repo to serve up helm chart packages
 repo:
 	@mkdir -p $(PACKAGE_DIR)
 	@helm serve --repo-path $(PACKAGE_DIR) &
 	@helm repo index $(PACKAGE_DIR)
 	@helm repo add local http://127.0.0.1:8879
+
+# stop local helm repo
+repo-stop:
+	@pkill helm
+	@helm repo remove local
 %:
 	@:
diff --git a/kubernetes/common/Makefile b/kubernetes/common/Makefile
index a78cc88..d634a8c 100644
--- a/kubernetes/common/Makefile
+++ b/kubernetes/common/Makefile
@@ -41,6 +41,7 @@
 package-%: lint-%
 	@mkdir -p $(PACKAGE_DIR)
 	@if [ -f $*/Chart.yaml ]; then helm package -d $(PACKAGE_DIR) $*; fi
+	@helm repo index $(PACKAGE_DIR)
 
 clean:
 	@rm -f */requirements.lock