Wherein I realize that I’ve been at this for almost a year now.

This is part 14 of my k8s migration series.

It has been quite a while since I last wrote a blog post about the migration. And I’ve realized today that it’s been almost a year since I made the decision to switch over to Kubernetes for my Homelab. On the 17th of August 2023, I posted about the HashiPocalypse.

Back then, I laid out my thoughts about HashiCorp’s decision to switch all of their tools, almost all of which I’m currently using in my Homelab, to the BSL license. Back then, I only announced it as an experiment, but it has become a migration at this point.

I really started the migration in mid-December 2023, so it hasn’t really been almost a year. The first months went pretty well and I got a lot of the initial setup and infrastructure into place. At the end of April, I was finally done with all of the infrastructure, from Ceph Rook for storage to kube-prometheus-stack for metrics. On the 28th of April, I migrated the first piece of what I’d call “real workload” over, my Audiobookshelf server. This then served me as a test bed, first of all for my workload template, but also for my backups, which came next.

And that’s where the problems started, when I finally realized that k8s doesn’t have a combination of CronJobs and DaemonSets. That’s a problem because my current backup setup, on my Nomad cluster, uses such a type of job to run my backups on every node.

But fear not, I thought: I know Python, I know how to access an API, we’re just going to write our own operator for backups!

And that was a mistake, in hindsight. Don’t get me wrong, I will still continue working on the operator, but starting to write it was a mistake. Because I know how programming projects generally go when I’m working on them alone. My intro of Nomad to my Homelab was delayed by about half a year because I decided I don’t like the Nomad CLI and wanted something more like docker-compose. So I got out the Python and wrote it. And it took ages.

This same thing has also happened here. It’s not really a complicated implementation. But it’s about my backups, so I want to do it properly. But the project is getting dragged out, and I’m not sure why. The motivation isn’t the same as it was while doing all of the infra setups at the beginning of the year. I averaged about one commit per week, if that much, now.

The problem is: I really need to get going with the migration. Maintaining what amounts to two different Homelabs, both hosting important things, is getting a bit too much. I mean, will I give up on the plan to implement my backup operator? No, of course not. Sunk cost fallacy and all that. But I definitely wish I hadn’t started. I would be way farther ahead. I just need to find where the heck my motivation has gotten to. Perhaps it’s just the summer? My motivation has generally been pretty low when the simple act of typing a bit more vigorously would already make me break out in a sweat. I really strongly dislike summer, and I’m very much ready for this year’s to be over and done with.

And it has a little bit to do with the ridiculousness of how I write software. First of all, the first couple of weeks are spend writing very copious amounts of notes. Making diagrams. Spending way more time on project/tooling setup than is at all reasonable. And then the tests. The ratio of UT code to production code is ridiculous. I couldn’t write a prototype or MVP if my life depended on it.

So if any one of you meets my motivation, please send it back to me! It will be the middle-aged guy who looks like his beard really shouldn’t be gray yet. You will recognize it by the large amount of grumbling going on.