Just as before, we'll start the practical part by making sure that we have the latest version of the k8s-specs repository.
1 cd k8s-specs
2 3 git pull
Unlike the previous chapters, you cannot use an existing cluster this time. The reason behind that lies in reduced requirements. This time, the cluster should NOT have ChartMuseum. Soon you'll see why. What we need are the same hardware specs (excluding GKE), with NGINX Ingress and Tiller running inside the cluster, and with the environment variable LB_IP that holds the address of the IP through which we can access the external load balancer, or with the IP of the VM in case of single VM local clusters like minikube, minishift, and Docker for Mac or Windows.
For GKE we'll need to increase memory slightly so we'll use n1-highcpu-4 instance types instead of n1-highcpu-2 we used so far.
- docker4mac-cd.sh: Docker for Mac with 3 CPUs, 4 GB RAM, with nginx Ingress, with tiller, and with LB_IP variable set to the IP of the cluster (https://gist.github.com/vfarcic/d07bcbc7c88e8bd104fedde63aee8374).
- minikube-cd.sh: minikube with 3 CPUs, 4 GB RAM, with ingress, storage-provisioner, and default-storageclass addons enabled, with tiller, and with LB_IP variable set to the VM created by minikube (https://gist.github.com/vfarcic/06bb38787932520906ede2d4c72c2bd8).
- kops-cd.sh: kops in AWS with 3 t2.small masters and 2 t2.medium nodes spread in three availability zones, with nginx Ingress, with tiller, and with LB_IP variable set to the IP retrieved by pinging ELB's hostname. The Gist assumes that the prerequisites are set through Appendix B (https://gist.github.com/vfarcic/d96c27204ff4b3ad3f4ae80ca3adb891).
- minishift-cd.sh: minishift with 4 CPUs, 4 GB RAM, with version 1.16+, with tiller, and with LB_IP variable set to the VM created by minishift (https://gist.github.com/vfarcic/94cfcb3f9e6df965ec233bbb5bf54110).
- gke-cd.sh: Google Kubernetes Engine (GKE) with 3 n1-highcpu-4 (4 CPUs, 3.6 GB RAM) nodes (one in each zone), with nginx Ingress controller running on top of the "standard" one that comes with GKE, with tiller, and with LB_IP variable set to the IP of the external load balancer created when installing nginx Ingress. We'll use nginx Ingress for compatibility with other platforms. Feel free to modify the YAML files and Helm charts if you prefer NOT to install nginx Ingress (https://gist.github.com/vfarcic/1b126df156abc91d51286c603b8f8718).
- eks-cd.sh: Elastic Kubernetes Service (EKS) with 2 t2.medium nodes, with nginx Ingress controller, with a default StorageClass, with tiller, and with LB_IP variable set to the IP retrieved by pinging ELB's hostname (https://gist.github.com/vfarcic/2af71594d5da3ca550de9dca0f23a2c5).
Here we go.