This guide describes the installation of A&AI via OOM on a clean Ubuntu 16.04 machine. It creates a local kubernetes cluster on the machine and starts the A&AI services using OOM (A&AI services are represented as Helm Charts inside OOM).

Note: the guide could be out-of-sync with the installation procedure anytime as OOM changes versions and dependencies and the changes might not be reflected here.

In order to install A&AI on a barebone Ubuntu 16.04 machine we have to install these apps:

  1. Docker
  2. Kubernetes
  3. Helm
  4. OOM

1. Docker installation

This is just a run-of-the-mill docker installation:

sudo apt-get remove docker docker-engine docker.io
sudo apt-get install     apt-transport-https     ca-certificates     curl     software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
sudo apt-get update
sudo apt-get install docker-ce

2. Kubernetes Installation

We install kubernetes with flannel and (in the last step) make master schedulable:

sudo curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -
sudo add-apt-repository "deb http://apt.kubernetes.io/ kubernetes-xenial main"
sudo apt-get update
#if the next step fails, verify that a file named /etc/apt/sources.list.d/kubernetes.list exists and contains this line: deb http://apt.kubernetes.io/ kubernetes-xenial main
sudo apt-get install kubelet kubeadm kubectl kubernetes-cni
# check that you have enough disk space under /var/lib/docker
# perform the preflight action
sudo kubeadm config images pull
#if the next step fails with an error about swap, do the following: sudo swapoff -a
sudo kubeadm init --pod-network-cidr=10.244.0.0/16
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
kubectl taint nodes --all node-role.kubernetes.io/master-

3. Hel(l)m

We need a specific version of helm (so don't install the newest), we also need to create a service account (otherwise we are unable to install from the local helm repository), we install tiller and add the repository itself:

wget http://storage.googleapis.com/kubernetes-helm/helm-v2.9.1-linux-amd64.tar.gz
tar -zxvf helm-v2.9.1-linux-amd64.tar.gz
sudo mv linux-amd64/helm /usr/local/bin/helm
helm version
kubectl create serviceaccount --namespace kube-system tiller
kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller
helm init
kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec": {"serviceAccount":"tiller"}}}}'
helm serve &
helm repo add local http://127.0.0.1:8879

4. OOM

The installation is as follows:

git clone "https://gerrit.onap.org/r/oom"
cd oom
git submodule init
git submodule update
sudo cp -R ~/oom/kubernetes/helm/plugins/ ~/.helm


Before running A&AI we must customize what projects should be enabled in the oom/kubernetes/onap/values.yaml file. As we want to run A&AI, we should have:

aai:
  enabled: true

and on all other ONAP projects enabled should be set to false (i.e. "enabled: false"). After we modify the values.yaml file we should be good to go:

cd oom/kubernetes
make all
sudo helm deploy demo ./onap --namespace onap

When you do

kubectl get pods --all-namespaces

you should see kubernetes and A&AI pods running.

To remove everything, execute:

helm undeploy demo --purge