From Proxmox to Kubernetes - Evolving My Homelab (part 1)
Introduction & Current Setup Overview
So I've been tinkering with Kubernetes in my homelab for some time now. It's been more of a fun experiment, however, things really started to click for me with how much I enjoyed the declarative orchestration posibilities. Kubernetes os known for container orchestration, and it does allow both imperative and declarative management.
Well, I've already been doing imperative management across my whole homelab with my Proxmox setups, VMs, LXCs, and containers within VMs. So I knew what that required. It's a great way to learn, and truly helps with building a strong problem solving mentality because you are making the configuration update and see the immediate results of your change. So when things break, you can just review what you had just done and learn why it happened and how to resolve it.
But I digress, my current homelab architecture is two Proxmox hosts, with most self-hosted apps/services running in LXCs. Things like Docmost, Caddy, n8n, and PiHole. Then I've got a few VMs to host my Ansible workflows for configuration management, and my Omada SDN which is running in a Podman container. There is also OpenMediaVault for shared storage and backups, as well as Proxmox Backup Server. This setup gets the job done for me, but it all requires very hands-on configuration. Could I just script everything and use Ansible to fill in my orchestration gaps? Sure. But if a service/app has a problem, it's just done. It won't automatically come back up unless I have that process also configured.
That's where this whole Kubernetes idea came to light. I'd never considered it previously for orchestrating all my self-hosted apps/services. And it wasn't until I had a better grasp on the theory behind GitOps that it all started to really make sense.
What this evolution means for my homelab
I'm already in the process of transitioning my homelab architecture to utilizing Kubernetes. Here's what it will look like:
-
Still relying on Proxmox "under the hood" so to speak.
I want to still have challenges. Rather than just go with 3 separate devices that run Talos, I'm going to have Kubernetes nodes running as VM's within my Proxmox. Makes me remember that networking, firewalls, and connectivity are super important, and great knowledge to keep up with.
-
Transition all my self-hosted apps to configuration files on GitHub
I've created a new repo on my GitHub titled "homelab" where I plan to build a complete GitOps process, complete with CI/CD, and automations. I'm going to utilized FluxCD in my Kubernetes cluster for this.
This will allow for me to declaratively control all of these through each configuration file, and through Pull Requests. More akin to a DevOps lifecycle, which is something I still strive to get more involved with in my career.
- Continue to use Ansible for configuration management outside of K8s
I still want to use Ansible for automating and orchestrating the VM configurations for Kubernetes Nodes, as well as infrastructure backup configurations.
Eventually I'll add in Terraform for true Infrastructure as Code (IaC) workflows and fully manage my Proxmox and VMs this way. But that's for another post.
Stay tuned as I write more about this evolution of my homelab. I plan to release several parts that detail the journey.