Getting started with Terraform on Digital Ocean by running a small Kubernetes cluster on CentOS.
To get the resources up and running, you need to export digitalocean_token as a prefixed env var :
export TF_VAR_digitalocean_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxThe following command will create both a master and a slave on CentOS for the kubernetes cluster:
cd terraform && terraform applyFirst connect to the master over SSH :
ssh root@<your_master_ip>Then configure the official repositories :
cat <<EOF > /etc/yum.repos.d/kubernetes.repo
[kubernetes]
name=Kubernetes
baseurl=http://yum.kubernetes.io/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg
https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
EOFEdit the selinux config to disable it SELINUX=disabled :
setenforce 0
vi /etc/selinux/configInstall the dependencies :
yum install -y docker kubelet kubeadm kubectl kubernetes-cni go git
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubeletInstall go deps :
PATH=$PATH:~/go/bin
go get github.com/kubernetes-incubator/cri-tools/cmd/crictlSet your iptables :
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptablesWe can now init Kubernetes with kubeadm init.
Finally, proceed to the commands provided by kubeadm :
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/configTo ensure everything is fine, run kubectl -n kube-config get pods.
Note: Copy the
kubeadm joincommand to join other machines later
Setup Calico running this command :
kubectl apply -f http://docs.projectcalico.org/v2.4/getting-started/kubernetes/installation/hosted/kubeadm/1.6/calico.yamlTo ensure all the pods get created well, watch it :
watch -n 0.1 kubectl --all-namespaces get podsSame as master :
yum install -y docker kubelet kubeadm kubectl kubernetes-cni go git
systemctl enable docker && systemctl start docker
systemctl enable kubelet && systemctl start kubelet
PATH=$PATH:~/go/bin
go get github.com/kubernetes-incubator/cri-tools/cmd/crictl
echo '1' > /proc/sys/net/bridge/bridge-nf-call-iptablesWe can now run your kubeadm join command.
Simply run :
kubectl create -f https://raw.githubusercontent.com/kubernetes/dashboard/master/src/deploy/recommended/kubernetes-dashboard.yaml