Skip to main content
Version: 1.3.X

Build Orchestrator

We'll build and publish Magma container images and Helm charts from source.

If this is your first time building Orchestrator, each step may take a while. We recommend continuing to the next step (Terraforming cloud resources) in a different shell and coming back to this section as each command completes.

Prerequisites

We'll go over how to publish images to Docker Hub and charts to a GitHub repo. For this you'll need

You can of course publish to a container registry or chart repository of your choice.

First, start up your Docker daemon then log in to the Docker Hub registry

$ docker login

Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: REGISTRY_USERNAME
Password:
Login Succeeded

Build and Publish Container Images

We provide scripts to build and publish images. The publish script is provided as a starting point, as individual needs may vary.

First define some necessary variables

export PUBLISH=MAGMA_ROOT/orc8r/tools/docker/publish.sh  # or add to path
export REGISTRY=registry.hub.docker.com/REGISTRY # or desired registry
export MAGMA_TAG=1.3.0-master # or desired tag

Build and publish Orchestrator images

cd MAGMA_ROOT/orc8r/cloud/docker
./build.py -a
for image in controller nginx ; do ${PUBLISH} -r ${REGISTRY} -i ${image} -v ${MAGMA_TAG} ; done

Build and publish NMS images

cd MAGMA_ROOT/nms/app/packages/magmalte
docker-compose build magmalte
COMPOSE_PROJECT_NAME=magmalte ${PUBLISH} -r ${REGISTRY} -i magmalte -v ${MAGMA_TAG}

Build and Publish Helm Charts

We'll build the Orchestrator Helm charts, as well as publish them to a GitHub repo acting as a Helm chart repo.

To start, create a private GitHub repo to use as your Helm chart repo. We'll refer to this as GITHUB_REPO.

Next, package the Magma Helm charts and publish them to the GitHub repo. You'll have to check out a temporary commit to build the 1.4.36 version of the orc8r chart for 1.3.x because 1.4.37 on the head of the release branch has some changes that you shouldn't try to deploy yet.

cd MAGMA_ROOT
git checkout a7580153

mkdir ~/magma-charts && cd ~/magma-charts
git init
helm package MAGMA_ROOT/orc8r/cloud/helm/orc8r/ && helm repo index .
git add . && git commit -m 'Initial chart commit'
git remote add origin GITHUB_REPO_URL && git push -u origin master

To confirm, reference the published charts locally

helm repo add GITHUB_REPO --username GITHUB_USERNAME --password GITHUB_ACCESS_TOKEN \
'https://raw.githubusercontent.com/GITHUB_USERNAME/GITHUB_REPO/master/'
helm repo update && helm repo list # should list the GITHUB_REPO repository
helm search repo GITHUB_REPO # should list the GITHUB_REPO chart

Finally, check out the newly-created index.yaml. It should contain the Orchestrator chart's version, which we'll use as a Terraform value in the next section.