Contents
- Install Rancher server
- Create a Kubernetes cluster
- Add Kubernetes nodes
- Install StorageOS as the Kubernetes storage class
- Understand Nginx Ingress in Rancher
Install Rancher
Create a VM with Docker and Docker Compose installed and install Rancher 2.0 with docker compose:
- Rancher docker-compose file: docker-compose.yaml
- Run these commands to install Rancher with docker compose:
git clone https://github.com/polinchw/rancher-docker-compose
cd rancher-docker-compose
docker-compose up -d
Create your Kubernetes cluster with Rancher
Install a custom Kubernetes cluster with Rancher. Use the ‘Custom’ cluster.
Add Kubernetes nodes and join the Kubernetes cluster
Run the following commands on all the VMs that your Kubernetes cluster will run on. The final docker command will have the VM join the new Kubernetes cluster.
Replace the –server and –token with your Rancher server and cluster token.
#!/bin/bash
#sudo apt update
#sudo apt -y dist-upgrade
#Ubuntu (Docker install)
#sudo apt -y install docker.io
sudo apt -y install linux-image-extra-$(uname -r)
#Debian 9 (Docker install)
#sudo apt -y install apt-transport-https ca-certificates curl gnupg2 software-properties-common
#curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
#sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
#sudo apt update
#sudo apt -y install docker-ce
sudo mkdir -p /etc/systemd/system/docker.service.d/
sudo cat <<EOF > /etc/systemd/system/docker.service.d/mount_propagation_flags.conf
[Service]
MountFlags=shared
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker.service
#This is dependent on your Rancher server
sudo docker run -d --privileged --restart=unless-stopped --net=host -v /etc/kubernetes:/etc/kubernetes -v /var/run:/var/run rancher/rancher-agent:v2.1.0-rc9 --server https://75.77.159.159 --token rb8k8kkqw55jqnqbbf4ssdjqtw6hndhfxxcghgv8257kx4p6qsqq55 --ca-checksum 641b2888ce3f1091d20149a495d10457154428f440475b42291b6af1b6c0dd06 --etcd --controlplane --worker
Download the kub config file for the cluster
After you download the kub config file you can use it by running this command:
export KUBECONFIG=$HOME/.kube/rancher-config
Install Helm on the cluster
git clone https://github.com/polinchw/set-up-tiller
cd set-up-tiller
chmod u+x set-up-tiller.sh
./set-up-tiller.sh
helm init --service-account tiller
Install StorageOS Helm Chart
helm repo add storageos https://charts.storageos.com
helm install --name storageos --namespace storageos-operator --version 1.1.3 storageos/storageoscluster-operator
Add the Storage OS Secret
apiVersion: v1
kind: Secret
metadata:
name: storageos-api
namespace: default
labels:
app: storageos
type: kubernetes.io/storageos
data:
# echo -n '<secret>' | base64
apiUsername: c3RvcmFnZW9z
apiPassword: c3RvcmFnZW9z
Add the StorageOSCluster
apiVersion: storageos.com/v1
kind: StorageOSCluster
metadata:
name: example-storageos
namespace: default
spec:
secretRefName: storageos-api
secretRefNamespace: default
csi:
enable: true
Set StorageOS as the default storage class
kubectl patch storageclass fast -p ‘{“metadata”: {“annotations”:{“storageclass.kubernetes.io/is-default-class”:”true”}}}’
Using the default Nginx Igress
Rancher automatically installs the nginx ingress controller on all the nodes in the cluster.
If you are able to expose one of the VMs in the cluster to the outside world with a public IP then you can connect to the ingress based services on ports 80 and 443.
Any app you want to be accessible through the default nginx ingress must be added to the ‘default’ project in Rancher.