Helm is the package manager for Kubernetes. It lets you define, install, and upgrade Kubernetes base applications. For more information about Helm, please the visit official website: https://helm.sh.
For information on how to install
helm please refer to
CORD Helm Charts
All helm charts used to install CORD can be found in the
repository. Most of the top-level directories in that repository
xos-core) correspond to components of
CORD that can be installed independently. For example, it is possible
to bring up
voltha, and vice versa. You can also
bring up XOS by itself (
xos-core) or XOS with its GUI (
xos-gui). This can be useful if you want to work on just the
CORD data models, without any backend components.
xos-profiles directories contain helm
charts for individual services and profiles (a mesh of services),
respectively. While it is possible to use Helm to bring up an
individual service, collections of related services are typically
installed as a unit; we call this unit a profile. Looking in the
rcord-lite is an example profile. It
corresponds to R-CORD, and inspecting its
file shows that it, in turn, depends on the
services, among several others.
Some of the profiles bring up sub-systems that other profiles then
build upon. For example,
base-openstack brings up three platform
related services (
which effectively provisions CORD to support OpenStack-based VNFs.
Once the services in the
base-openstack profile are running, it
is then possible to bring up the
mcord profile, which corresponds
to ~10 other services. It is also possible to bring up an individual
service by executing its helm chart; for example
Note: Sometimes we install Individual services by first "wrapping" them in a profile. For example,
SimpleExampleServiceis deployed from the
xos-profiles/demo-simpleexampleserviceprofile, rather than directly from
xos-services/simpleexampleservice. The latter is included by reference from the former. This is not a fundamental limitation, but we do it when we want to run the
tosca-loaderthat loads a TOSCA workflow into CORD. This feature is currently available at only the profile level.
base-kubernetes profile brings up Kubernetes in
support of container-based VNFs. This corresponds to the
kubernetes-service, not to be confused with CORD's use of
Kubernetes to deploy the CORD control plane. Once this profile is
running, it is possible to bring up an example VNF in a container
by executing its helm chart; for example
base-kubernetesconfiguration does not yet incorporate VTN. Doing so is work-in-progress.
Finally, note that the
templates sub-directory in both the
xos-profiles directories includes one or
more TOSCA-related files. These play a role in configuring the
service graph and provisioning the individual services contained
in that service graph. This happens once the helm charts have
done their job, and is technically a post-install operation, as
discussed in the Operations Guide.
Download the helm-charts Repository
You can get the CORD helm charts by cloning the
git clone https://gerrit.opencord.org/helm-charts
Note: If you have downloaded the CORD code following the Getting the Source Code guide, you'll find it in
IMPORTANT: All the helm commands needs to be executed from within this directory
Add the CORD Repository to Helm
If you don't want to download the repository, you can make the charts available to helm by adding the repo to the list of repos it can obtain charts from:
helm repo add cord https://charts.opencord.org/master helm repo update
If you decide to follow this route, you have to use the repo name (in this case
cord) with a prefix (
cord/) to specify which repo to obtain a chart from.
helm install -n xos-core xos-core
helm install -n xos-core cord/xos-core
Overriding chart values
Occasionally you may need to override and customize the default settings of a chart.
This is done using a "values file", and is done most frequently during development or when customizing a deployment.
Development-specific and deployment example values files can be found in the helm-charts/examples directory.
Specifying a Docker registry
Most charts specify a global value for the address of a Docker image registry. By default this is blank, assuming that images will be pulled from the global hub.docker.com registry:
global: registry: ''
This would be overridden as follows - make sure to include the trailing
character to separate the registry from the name of the container:
global: registry: '10.90.0.101:30500/'
Note that using setting this value with change the registry setting for every image in a chart.
To handle building and pushing images to a registry, see the development documentation.
If you want to change only the registry for one specific image, the easiest way
is to modify the
repository setting - for example:
images: xos_gui: repository: 'xosproject/xos-gui' tag: '2.1.0' pullPolicy: 'Always' xos_ws: repository: 'xosproject/xos-ws' tag: '2.0.0' pullPolicy: 'Always' global: registry: ''
You would modify the
repository value for the specific image, but not the
images: xos_gui: repository: '10.90.0.101:30500/xosproject/xos-gui' tag: '2.1.0' pullPolicy: 'Always' xos_ws: repository: 'xosproject/xos-ws' tag: '2.0.0' pullPolicy: 'Always' global: registry: ''