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
mainbranch - 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
Featured Apps
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
- GitOps Workflow β All changes via Git commits, auditable and versioned
- Immutable Nodes β Talos Linux reduces attack surface, no SSH
- Replicated Storage β Longhorn provides 3 copies across nodes
- 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.