This one is just a short review of Kubernetes the Hard Way. The idea is that you set up a raw (but minimal) Kubernetes cluster from scratch. Even though the tutorial is already quite old, it is still very well maintained and up-to-date.
It is fully cloud provider independent, a welcome change from when I last looked at it. In fact, you can now set up the entire cluster on your own machine. Alternatively, you could even go down the route of using several physical machines in your home network. This would be a pretty cool project. For simplicity I just went with four virtual Debian machines in virt-manager.
With some focus it’s probably possible to finish everything in an afternoon. This of course depends a lot on how much you want to read up on various things. The tutorial does not explain everything. Sometimes it provides explanations, sometimes additional links, sometimes you’ll have to use your own curiosity and some google-fu. It took me about 2 days on-and-off to get through everything. I did not dive very deep.
One more note on the format. This tutorial could easily be book-length as well. This is an advantage if you have some background already and a disadvantage otherwise. Without some basics you might just get lost. With some background however you have the option to quickly skip through parts that are easy for you and just read up on the rest. Personally I really like this style.
The code is up-to-date and basically just work. I don’t think I encountered any errors. All in all it was a rather smooth ride. Be aware though that there are a lot of dragons. If you deviate from the beaten path you may find yourself in some pretty hard-to-debug state. The tutorial is what it is, because someone else put a lot of effort into making everything work together smoothly. That being said, the hard way is often the path to true mastery. So do your worst!
When setting up the cluster I got a glimpse at just how massive all this really is. There are so many parts involved, with so many options to configure and choose from. Not just Kubernetes itself but also the stack it is built upon. Deeply understanding all of it in a bespoke, high-quality, production ready setup is a skill I can just awe at.
One of the more surprising things I learned is the very elegant use of shell scripts. It uses a style that I find quite intriguing. Simple but pretty powerful. Most of the shell usage I know is either a handful of interactive commands, quite basic one-off-scripts or horribly messy, hacked-together spaghetti scripts. Shell syntax makes it all too easy to get there. During Kubernetes the Hard Way I got a glimpse what a real master wielding this power with taste can do. Now I want to level up my shell game.
Lastly, be aware that a lot of time in such a raw setup is actually just spent on configuring networking and the underpinnings of Kubernetes. I.e. make things run, then make things talk to each other and then make things talk to each other over secure channels. Besides sysadmin and network configuration there’s a lot of OpenSSL.
After your cluster is up and running you can play around with it. Apart from this it is probably not very useful. While it works there’s still a lot missing for a complete, production ready Kubernetes setup. That’s also hardly the goal, just manage your expectations.
My final verdict is >highly recommended< if you have some basics down and want to lurk a little behind the curtains. It’s not a huge commitment to go through, it’s very well maintained and hands-on. If you’re at all interested in these things you’ll probably have a good time.