Homelab Setup: The Journey to Kubernetes

Posted on Mon 10 February 2025 in homelab

Why I'm Migrating My Self-Hosted Services

I've decided to migrate all my existing self-hosted services—and add a few new ones—to a Kubernetes (K8s) cluster that I'm going to build. There are several motivations behind this decision:

Learning Kubernetes Beyond Ephemeral Clusters

  • My role as an Engineering Manager at Syntasso involves a lot of K8s development using Kind, but these environments are entirely ephemeral. I want to experience the long-term challenges of operating a cluster to build greater empathy for our customers.
  • I want to deepen my understanding of Kubernetes, particularly in areas like:
    • Hardening a K8s cluster
    • Managing multiple clusters effectively

Increased Focus on Self-Hosting

  • The British government's baffling approach to tech privacy has pushed me toward self-hosting more of my personal services.
  • My current setup is a mix of manually configured systems and Docker Compose-based services running on different machines. It’s time to bring structure to the chaos.

The Plan

Time Constraints and Approach

I'm a dad with two small kids, so my time for this project is limited. My approach will be:

  • Chipping away at it for a few minutes each night.
  • Updating my progress as I go along.
  • Keeping it cheap—I'll work with my existing hardware for now. If this experiment proves successful, I may invest in better hardware later.
  • Minimising downtime—I already have services running that I need to migrate carefully without disruptions.

Migration Phases

The migration will be broken down into multiple phases to ensure a smooth transition. My current focus is on:

  1. Setting up RAID storage for critical data (Nextcloud, Git-Tea, Pixelfed, databases) on an old laptop.
  2. Keeping USB media drives on a thin client until I migrate services to Kubernetes.
  3. Moving USB media drives to a MergerFS pool for media storage before the final migration.
  4. Building a Kubernetes cluster (Talos OS) once storage is stable.
  5. Migrating services from Docker Compose to Kubernetes with proper storage integration.

Rough Architecture

At the moment, everything will sit under the same LAN at home. However, as I progress, I may invest in a switch and introduce proper network segmentation.

This is just the beginning. I'll document my learnings, mistakes, and adjustments along the way. Stay tuned!