In my professional life I use terraform, kubernetes, various cloud providers… Why did I choose k8s as a solution for my self-hosted server overhaul? Was it a good idea?

Reasoning

As a DevOps professional, I always strive to learn new things. However, in projects, there isn’t always space to experiment with new concepts. Small changes can break many things, and some chosen architectures are already deeply integrated with other components. When I go with smaller scale and personal server I still have a lot of things that I cant test and learn from.

Another reason for choosing Kubernetes is that a lot of software has different requirements, making it hard or impossible to host on one server. Over time, this can result in a mess, making the server unmaintainable. Also, a lot of software is shipped in containers and even comes with Helm charts, making it easy to host. This allows me to focus on automating things, and test CI/CD approaches as well.

K3s

I chose k3s after seeing a post on reddit or somewhere else. Project website stated that it’s lightweight, single binary. What more could I need? It’s shipped with ingress by default, so there is near-zero configuration needed to start, which is great.

What I dislike? Official method of installation from the docs - curl <url> | sh -. To me, it’s just… pure evil. Additionally, the Traefik ingress shipped by default is… different. While I can always change it to nginx-ingress or whatever else, I got used to it. The documentation sometimes can be hard to understand, but I already covered most use cases for myself. When everything works, it’s fine, but I struggle to find errors when it’s not. Sometimes it’s something as little as a typo in service name ;(

Nowadays, I see some alternatives like k0s or microK8s, backed by different bigger players, so it may be worth trying too. However, when I first played around with K3s, they weren’t as popular, and I haven’t looked deeper into those alternatives (yet?).

Was it good idea?

I think so. One of the positives is that it pushed me to write my blog again. I also learned about few tools I didn’t have opportunity to try in my projects, like renovate and helmfile. In future, I may write a short guide how to run k3s and host a simple static page on it.