πŸ–₯️ Home Lab K3s
File View GitHub LinkedIn Help
πŸ“ k3s.wagmilabs.fun

Home Lab Kubernetes

GitOps-managed K3s cluster running on Talos-based nodes with Longhorn storage.

This site showcases a subset of my home lab infrastructure β€” production-ready manifests for common self-hosted applications.


ArgoCD CI/CD Pipeline

All deployments are managed via ArgoCD β€” GitOps-style continuous delivery.

Pipeline Flow

Developer β†’ Git Commit β†’ ArgoCD Detects β†’ Sync β†’ K3s Cluster

1. Commit Changes

# Edit manifests
vim Apps/pairdrop/base/deployment.yaml

# Commit & push
git add -A && git commit -m "Update PairDrop config"
git push origin main

2. ArgoCD Auto-Sync

  • Polls repo every 3 minutes
  • Detects changes in main branch
  • Applies manifests: kubectl apply -k Apps/pairdrop/base/
  • Rolls out deployment

3. Verify Deploy

# Watch rollout
kubectl rollout status deployment/pairdrop -n pairdrop-space

# Or via ArgoCD UI
https://argocd.k3s.wagmilabs.fun

Manual Deploy (Testing)

kubectl apply -k Apps/pairdrop/base/
kubectl rollout restart deployment/pairdrop -n pairdrop-space

Storage & Infrastructure

  • Longhorn β€” Cloud-native distributed block storage
  • Windows VM β€” Windows 11 VM via KubeVirt

Applications

  • PairDrop β€” Local file sharing (AirDrop alternative)
  • Minecraft β€” Minecraft server with K8s management

Cluster Architecture

3-Node K3s Cluster (Talos Linux)

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”         β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚  Control Plane  β”‚         β”‚     Worker Nodes        β”‚
β”‚                 β”‚         β”‚                         β”‚
β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”  β”‚         β”‚  β”Œβ”€β”€β”€β”€β”€β”€β”€β”  β”Œβ”€β”€β”€β”€β”€β”€β”€β”   β”‚
β”‚  β”‚   etcd    β”‚  β”‚         β”‚  β”‚Worker β”‚  β”‚Worker β”‚   β”‚
β”‚  β”‚ API Serverβ”‚  β”‚         β”‚  β”‚ Node 1β”‚  β”‚ Node 2β”‚   β”‚
β”‚  β”‚ Scheduler β”‚  β”‚         β”‚  β”‚       β”‚  β”‚       β”‚   β”‚
β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜  β”‚         β”‚  β”‚Longhornβ”‚ β”‚Longhornβ”‚  β”‚
β”‚                 β”‚         β”‚  β”‚Replica β”‚ β”‚Replicaβ”‚   β”‚
β”‚                 β”‚         β”‚  β”‚   1    β”‚ β”‚   2   β”‚   β”‚
β”‚                 β”‚         β”‚  β””β”€β”€β”€β”€β”€β”€β”€β”˜  β””β”€β”€β”€β”€β”€β”€β”€β”˜   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜         β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
        β”‚                              β”‚
        └─────────── Workloads β”€β”€β”€β”€β”€β”€β”€β”€β”˜
              (Pods scheduled on workers only)

Storage: Longhorn (2 Replicas on Workers)

  • Control Plane β†’ Runs etcd, API server, scheduler (no workloads)
  • Worker Node 1 β†’ Runs workloads + Longhorn Replica 1
  • Worker Node 2 β†’ Runs workloads + Longhorn Replica 2

Workloads are scheduled only on worker nodes. Control plane remains untouched for cluster stability.

If a worker fails, pods reschedule to the remaining worker. Longhorn maintains replica count automatically.


Tech Stack

Component Technology
Orchestrator K3s (Kubernetes lightweight)
Nodes Talos Linux (immutable OS)
Storage Longhorn (cloud-native block storage)
GitOps ArgoCD (declarative sync)
Ingress nginx-proxy-manager (reverse proxy + SSL)
VPN WireGuard (remote access)

Why This Architecture?

Design Decisions

  1. GitOps Workflow β€” All changes via Git commits, auditable and versioned
  2. Immutable Nodes β€” Talos Linux reduces attack surface, no SSH
  3. Replicated Storage β€” Longhorn provides 3 copies across nodes
  4. Declarative Config β€” Kustomize for DRY manifests

Trade-offs

Benefit Trade-off
Reproducible deploys Learning curve for K8s
High availability Resource overhead
Easy rollback Complexity for simple workloads


Contact

Repo: github.com/mentholmike/k3s
Domain: k3s.wagmilabs.fun
LinkedIn: Michael Wyatt

This is a personal home lab β€” not for production use without review.

Ready k3s.wagmilabs.fun
Start
πŸ–₯️ Home Lab K3s
gh
12:00 AM