I’m currently struggling with upgrading some Postgres DBs on my home-k3s and I’m seriously considering throwing it all away since it’s such a hassle.
So, how do you handle DBs? K8s? Just a regular daemon?
Are we talking database schema migrations or migrating a database between Postgres instances?
If it’s the former, the pattern is usually to run them in init containers or Jobs but I have been wanting to try out SchemaHero for a while which is a tool to orchestrate it and looks pretty neat.
ETA: Thought I was replying to your below comment but Memmy deleted it the first time for some reason, my bad.
I have a single database server because I can’t afford two servers with high storage. The servers that need access to it connect over wireguard VPN. This is slow as f**k don’t do that.
I’m a big fan of the zalando postgres operator. A lot of the critical features you’d want in production databases are handled and very nicely abstracted.
Never tried it but kubegres seems like a good implementation for kubernetes. I guess if you just have a single-node cluster there won’t be much benefit but it seems a periodic backup to NFS is key (you can run NFS on most anything).
For personal use, I don’t bother with databases on k8s. They are waaay easier to manage if you just let your host distribution run it as a regular service and Upgrade it through that
Cautiously.
I avoid software which requires a relational database altogether. For me that’s part of the fun of self hosting: what’s the simplest possible system I can get away with at my tiny scale?