I recently went on a bit of a quest to teach myself Kubernetes so I could help a couple of software development teams improve their Software Development Lifecycle. I’m a strong believer in lean software development with a strong focus on getting rid of waste. A good way of doing this is putting the right tools in place which kind off enforces lean ways of working. A good example is Continuous Integration or serverless architecture. You put it in place and when the team starts using it waste (manual installs or setting up and maintaining Jenkins) disappears.
However, all this comes with an (upfront) cost. Either in effort spend beforehand (setting up Jenkins with a scalable cluster of build agents), paying a 3rd party to maintain a part of your development pipeline or a big upfront learning curve (paid in time).
Welcome to Kubernetes. Once it’s up and running it’s a fantastic tool to run an orchestrated microservices architecture. But setting it up properly, for example, with high availability in multiple AWS availability zones with multiple subdomains, it is not that that easy.
So if you want to set it up yourself and not use a third party ready available cluster, I thoroughly recommend following the Kubernetes the Hard Way tutorial. Not necessarily to setup your production cluster (e.g. it’s not written for high availability in multiple zones). But going through the steps one by one will give you a good basic understanding of the internals of Kubernetes and help you better understand future problems.
For people who are already familiar with networking and certificate generation I created some Terraform script to setup the network and some bash scripts to guide you through the certificate part. This way you can dive straight into the Kubernetes chapters. The scripts can be found on my Github account in the kubernetes-terraform repository.
You will discover that setting up a Kubernetes cluster is not that easy because there are a lot of moving parts. So if you want to do this I highly recommend Kops, a tool build by the Kubernetes team, and only recently come out of alpha. It helps you setup Kubernetes and does a lot of work for you. On top of that; the people on the forums are very helpful in case you run into trouble.