GitOps-managed Kubernetes homelab built on Talos Linux , Sidero Omni , and ArgoCD .
Component
Description
Talos Linux
Secure, immutable Kubernetes OS
Sidero Omni
Kubernetes cluster management
ArgoCD
GitOps continuous delivery
Component
Description
Prometheus
Metrics & alerting
Grafana
Visualization & dashboards
Loki
Log aggregation
Thanos
Long-term metrics storage
Cluster
Type
Purpose
Nodes
omni-local
Talos (Single Node)
Omni management cluster
1 CP
zendo
Talos (Omni-managed)
Production workloads
3 CP + 4 Workers
spark
RKE2
Edge/experimental
Variable
homelab/
├── apps/ # Application configs & Helm values
│ ├── argocd/ # ArgoCD + bootstrap chart
│ ├── argocd-apps/ # App-of-apps definitions
│ ├── cilium/ # CNI + BGP/Gateway config
│ ├── omni/ # Self-hosted Omni + BMIP
│ └── .../ # Other applications
└── clusters/ # Cluster-specific configs
├── omni-local/ # Talos config (talhelper)
└── zendo/ # Omni-managed cluster
Install tools : talosctl, kubectl, talhelper, helm, infisical
Store secrets in Infisical at /omni/omni-local-cluster
Configure clusters/omni-local/talos-config/talconfig.yaml
Generate configs : just generate
Boot node with Talos media
Apply config : talosctl apply-config --insecure --nodes <ip> --file <config>
Bootstrap cluster : talosctl bootstrap -n <ip>
Get kubeconfig : talosctl kubeconfig
Install CNI : Gateway API CRDs → Cilium → Cilium Config
Install External Secrets : Helm chart → Infisical auth secret → ClusterSecretStore
Install ArgoCD : Helm chart → argocd-init bootstrap chart
ArgoCD manages everything via app-of-apps pattern:
argocd-init → argocd-apps → [all applications]
To add/update apps : Modify files in apps/, commit, push — ArgoCD auto-syncs.
Omni-Managed Bare Metal Cluster
Option A : Download Talos image from Omni UI
Option B : Configure Bare Metal Infrastructure Provider for PXE boot
Boot machines with Omni media — machines auto-register via SideroLink
Create cluster in Omni UI — assign control planes and workers
Apply config via Omni (automatic with patches)
Bootstrap components : Label nodes → Install Cilium → External Secrets → ArgoCD
Same as omni-local. ArgoCD syncs cluster-specific values from apps/*/settings/zendo/.
Cluster
Pod CIDR
Service CIDR
VIP
omni-local
10.11.0.0/16
10.12.0.0/16
10.96.10.100
zendo
10.111.0.0/16
10.112.0.0/12
10.96.10.150
Detailed bootstrap instructions : See clusters/omni-local/README.md