This section walks you through one example installation sequence. If you'd prefer to understand the installation process in more depth, including the full range of deployment options, you might start with the Installation Guide
The following describes how to install the R-CORD profile, plus a SimpleExampleService
, on a single Linux box. Once you complete these steps, you might be interested in jumping ahead to the SimpleExampleService Tutorial to learn more about the make-up of a CORD service.
After a fresh install of Ubuntu 16.04 Server, install Docker and Python:
sudo apt update sudo apt-get install python sudo apt-get install python-pip pip install requests sudo apt install -y docker.io sudo systemctl start docker sudo systemctl enable docker
Now, verify the docker version.
docker --version
Install minikube
and kubectl
:
curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64 chmod +x minikube sudo mv minikube /usr/local/bin/ curl -Lo kubectl https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl && chmod +x kubectl curl -LO https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
Issue the following commands:
export MINIKUBE_WANTUPDATENOTIFICATION=false export MINIKUBE_WANTREPORTERRORPROMPT=false export MINIKUBE_HOME=$HOME export CHANGE_MINIKUBE_NONE_USER=true mkdir -p $HOME/.kube touch $HOME/.kube/config export KUBECONFIG=$HOME/.kube/config
Navigate to the /usr/local/bin/
directory and issue the following commands. Make sure there are no errors afterwards:
sudo -E ./minikube start --vm-driver=none
You can run
kubectl cluster-info
to verify that your Minikube cluster is up and running.
Locate the KUBECONFIG
file:
sudo updatedb
locate kubeconfig
Export a KUBECONFIG
variable containing the path to the configuration file found above. For example, If your U
file was located in the /var/lib/localkube/kubeconfig
directory, the command you issue would look like this:
export KUBECONFIG=/var/lib/localkube/kubeconfig
There are two general ways you might download CORD. The following walks through both, but you need to follow only one. (For simplicity, we recommend the first.)
The first simply clones the CORD helm-chart
repository using git
. This is sufficient for downloading just the Helm charts you will need to deploy the set of containers that comprise CORD. These containers will be pulled down from DockerHub.
The second uses the repo
tool to download all the source code that makes up CORD, including the Helm charts needed to deploy the CORD containers. You might find this useful if you want look at the interals of CORD more closely.
In either case, following these instructions will result in a directory ~/cord/helm-charts
, which will be where you go next to continue the installation process.
git clone
Create a CORD directory and run the following git
command in it:
mkdir ~/cord cd ~/cord git clone https://gerrit.opencord.org/helm-charts cd helm-charts
repo
Make sure you have a bin/
directory in your home directory and that it is included in your path:
mkdir ~/bin PATH=~/bin:$PATH
Download the Repo tool and ensure that it is executable:
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo chmod a+x ~/bin/repo
Make a /cord
directory and navigate into it:
mkdir ~/cord cd ~/cord
Configure git
with your real name and email address:
git config --global user.name "Your Name" git config --global user.email "you@example.com"
Initialize repo
and download the CORD source tree to your working directory:
repo init -u https://gerrit.opencord.org/manifest -b master repo sync
Run the Helm installer script that will automatically grab the latest version of the Helm client and install it locally:
curl https://raw.githubusercontent.com/kubernetes/helm/master/scripts/get > get_helm.sh chmod 700 get_helm.sh ./get_helm.sh
Issue the following:
sudo helm init sudo kubectl create serviceaccount --namespace kube-system tiller sudo kubectl create clusterrolebinding tiller-cluster-rule --clusterrole=cluster-admin --serviceaccount=kube-system:tiller sudo kubectl patch deploy --namespace kube-system tiller-deploy -p '{"spec":{"template":{"spec":{"serviceAccount":"tiller"}}}}' sudo helm init --service-account tiller --upgrade
Install socat
to fix a port-forwarding error:
sudo apt-get install socat
Issue the following and make sure no errors come up:
helm ls
Deploy the service profiles corresponding to the xos-core
, base-kubernetes
, and demo-simpleexampleservice
helm-charts:
cd ~/cord/helm-charts helm init sudo helm dep update xos-core sudo helm install xos-core -n xos-core sudo helm dep update xos-profiles/base-kubernetes sudo helm install xos-profiles/base-kubernetes -n base-kubernetes sudo helm dep update xos-profiles/demo-simpleexampleservice sudo helm install xos-profiles/demo-simpleexampleservice -n demo-simpleexampleservice
Use kubectl get pods
to verify that all containers in the profile are successful and none are in the error state.
Note: It will take some time for the various helm charts to deploy and the containers to come online. The
tosca-loader
container may error and retry several times as they wait for services to be dynamically loaded. This is normal, and eventually thetosca-loader
containers will enter the completed state:
This completes our example walk-through. At this point, you can do one of the following: