I decided to explore how simple it would be run my blog on Kubernetes. Oh, I was not prepared for the simplicity of the resulting findings!
This blog is a pretty simple. Yes, it involves sophisticated tools like hugo and github pages, but running the site is nothing but serving static files. So I was expecting a straightforward setup with Kubernetes.
Surprisingly, the most cumbersome task was signing up for a particular cloud provider! Once I had that done, the rest was a breeze!
Unexpectedly, these were such a hassle. All I needed:
This was the first one I tried. Google’s GKE required a custom CLI (gcloud) to be installed on my laptop. Not a big deal I thought, I decided to install it. However, its installation instructions required running a custom python installer script, including a specific python interpreter version. This was a deal breaker for me - I neither wanted yet another python version on my machine, nor wanted to waste time inspecting and running a installer script.
So I dropped this cloud provider.
After my failed attempt with GKE, I decided to completely skip this one - AWS is not known for its simplicity. I’ve also used this one before, so I wasn’t excited about trying it out for this particular experiment. Off to the next one!
This was the most disappointing of all, as I was not even able to try it out. The signup process just auto-rejected me. I was using a valid Credit Card (tried different ones), but I was still getting rejected. With some googling, I found this is actually a common scenario if you try to create a personal account (as opposed to a company account).
I tried a couple of times, also wrote an email to their support… but I didn’t hear back for days. Eventually their support team did reply and actually approved my account, but it was too little, too late - I had already moved on to another provider.
This managed Kubernetes was exactly what I was looking for - simple signup process, good documentation, no complicated authentication for “kubectl”. After a few minutes with their signup process, I was ready to jump in!
OMG, the simplicity of K8s is incredible. Everything is centered around resources like ReplicaSet, Deployment, Pod, and manipulating them is done in a CRUDE style, very intiutive, very simple to manage with plain-text configuration files.
I first prepared a local working setup based on minikube, which turned out to be straightforward:
These two wrapped in a Pod, which was in turned wrapped in a Deployment, and that was pretty much it!
A step I intentionally skipped was setting up Ingress I wanted to avoid accidentally incurring any unwanted costs by exposing the site to the public web.
Once I had the working local setup, I re-executed the commands against the cloud provider’s (DOKS) managed Kubernetes. I ran the exact same 2-3 commands that I had executed on minikube and I was done.
As a follow-up I’m considering adding a Helm chart - would be a nice learning opportunity.
I took this opportunity to explore Kubernetes and gain some intuition about the benefits it provides. I had high expectations, and can confidently say they were all met - ease of use, quality of documentation, features were all just great!