Another click-baity headline, don’t go, but hear me out, it’s a good idea.
Every now and then I try to look into “simpler” deployment options than my forgotten kubernetes cluster. I eventually abandoned nomad for k3s after running into constant pain from insufficient tooling. Then I forgot about that cluster for like 2 years and I’m waiting for an epic crash which would force me to redo the whole thing again.
Fairly recently I looked into coolify, happily deployed an app via click ops only to realize it doesn’t allow you to even scale a single container. I had to do some weird app-on-app deployment, copy ENVs from one app to another just to spin up a background worker. There is a terraform provider which seems mostly blocked by insufficient APIs exposed by coolify.
On the other hand we have tools like kamal which seems to be a “capistrano on docker” solution (as per their website). I’m quite confused why Basecamp decides to reinvent the wheel here using plain docker containers; they’re even writing their own proxy now?
Then there are a myriad of other solutions like swiftwave, cozystack, dokku or dokploy.
I think the whole deployment/orchestration management is a really difficult problem - that’s why there are maybe so many solutions as in a way it’s also an exciting problem. But IMHO? It’s not a problem worth solving as it was already solved. k3s by stripping all cloud-related irrelevant stuff and baking in the batteries required to run “The Actual Cluster” makes kubernetes really approachable. This tiny distribution* allows you to do easy stuff, but also is flexible enough to adjust it for your own needs without a ton of hacks, duct tape and gum. Because really quickly you’re going to run into basic problems of scaling stuff up and down, cronjobs, secrets/envs management, observability, zero downtime deployments, need for various one-shot jobs, processes, whatever else. That and more is already covered.
The biggest pro and possibly a con is that the kubernetes ecosystem is so goddamn huge - which is overwhelming at first. It’s difficult to decide what’s actually useful and what is not and it just indeed takes time to learn a bit. But that investment is worth it - as there’s pretty much a guarantee that your problem was already solved by someone else. Boring? Maybe. Pragmatic? Definitely.
*Or you know, just pay some cloud/hosting provider to run cluster for you