dazgupta.com /posts /journal /tags


04-02-2026

Personal K3s cluster #1

The idea of having my own compute cluster seemed like a nice idea, a nice little corner of the internet for myself where I can deploy whatever I want without the pain of having to SSH-ing into machines, editing nginx configurations, writing docker-compose files and a thousand other things that I do just to keep my websites etc. running. If I have a cluster of my own, I can have a nice CI/CD workflow for my personal projects which I never work on. I can also have some nice logging, observability stack to go with it. I couldrun some fediverse applications as well. And, best of all, it's possible to automatically update the infrastrucutre, which is something I barely do.

It is one of those IT infrastructure project that is build on the promise of future use, but for purely personal use, it's completely unnecessary and overkill. I have been maintaining multiple websites and a bunch of applications purely on docker compose and bare nginx, and it works fine. It's hard to justify given I am quite lazy, and maintaining a cluster is a chore on it's own, but the idea have been tempting me for quite some time. I used to be a Digitalocean subscriber, but compute prices there were quite high and I ended up moving to Hetzner. Pratically the same setup, but different providers. Hetzner is not as feature rich as DigitalOcean but relatively cheaper, and for side projects and blogs that no one reads, the prices are unbeatable. Over the years, I have perfected my server setup, but I would be lying if I said I didn't wish it to be easier and more modern. My usual application deployment steps include DNS, TLS certificate issuing, nginx configuration, actual application. And I always need to manually release new versions of my apps. It's a lot of manual work by modern software development standards.

So earlier today, I on a whim, I started to setup a K3s cluster, with the help of this nifty terraform Kube setup. It has almost all the features I thought I needed, and with the help of Claude Opus 4.5, I managed to deploy a cluster, with a test web service, automatic certificate issuing, load balancing, and a docker registry with persistent storage. So far so good, but then I started poring over all the configs that Claude had produced, and I realised I don't know a lot of these infrastructural units. I can take a guess on most of these, but I don't really understand how they all play together. Kubernetes is generally a slightly black box for me, but not having to actually write these building blocks, I realised I understand it even less.

In the end I tore down my 3-node cluster, but I kept all the code. Maybe I'll pore over them, and hope to understand it slightly better next time when I recreate it again.

#infra #it