Skip to content

Repository files navigation

Erasmus.works logo

Kubernetes   Talos   ArgoCD

Grafana   Prometheus   Alertmanager

Age-Days   Uptime-Days   Node-Count   Pod-Count   CPU-Usage   Memory-Usage   Alerts

My Homelab Kubernetes repo for a Talos cluster, with a simple GitOps workflow using Argo CD.


Overview

This repository is the source of truth for my personal homelab Kubernetes cluster. I try to keep things simple and reproducible by following Infrastructure as Code (IaC) and GitOps practices with tools like Talos, Kubernetes, Argo CD, and Renovate.


Kubernetes

My Kubernetes cluster is deployed with Talos Linux. It is a small Talos cluster built to stay simple, low-maintenance, and reliable for the services I actually run. It currently has two nodes with a single control-plane node.

Core Components

For a compact overview of what is currently deployed, see the Kubernetes Inventory.

GitOps

Argo CD watches the manifests in my kubernetes folder and makes changes to my cluster based on the state of my Git repository.

Renovate watches my repository for dependency updates, and when they are found a pull request is automatically created. When pull requests are merged Argo CD applies the changes to my cluster.

flowchart LR
    github["🐙 GitHub Repo"] --> argo["🚀 Argo CD"]
    internet["🌍 Internet"] --> cf["☁️ Cloudflare Tunnel"]

    subgraph cluster["🧱 Talos Kubernetes Cluster"]
        argo
        apps["📦 Apps"]
        infra["🧩 Infrastructure"]
    end

    argo --> infra
    argo --> apps
    cf --> infra
    infra --> apps
Loading

Directories

This Git repository contains the following directories.

.
├── 📁 kubernetes/
│   ├── 📁 clusters/homelab/   # Cluster root and top-level Argo CD applications
│   ├── 📁 infra/              # Shared platform services
│   └── 📁 apps/               # User-facing workloads
├── 📁 talos/                  # Talos machine config and patches
├── 📁 docs/                   # Practical runbooks and notes
└── 📁 linux/                  # Local workstation/helper files

Cloud Dependencies

While most of my infrastructure and workloads are self-hosted, I do rely upon the cloud for a few key parts of my setup. This keeps the setup simpler and avoids making the cluster responsible for every critical dependency.

Service Use Cost
Cloudflare Domain, DNS, Zero Trust Tunnel ~€22/yr
Bitwarden Secrets Manager External secret source for Kubernetes ~€18/yr
SMTP2GO Outbound email delivery for cluster apps Free
GitHub Git hosting and Argo CD source of truth Free
Total: ~€3.35/mo

Hardware

This cluster currently runs on two small-form-factor nodes.

Hardware Model CPU GPU Memory Storage
K8s Node 1 MINIS FORUM UN1245 Mini-PC Intel Core i5-12450H Intel UHD Graphics 16 GB DDR4 RAM 512 GB SSD
K8s Node 2 Blackview MP-80 Intel Processor N97 Intel UHD Graphics 16 GB DDR5 RAM 512 GB SSD
Router UniFi Express 7 (UX7) - - - -
Switch 2.5 Gbps switch - - - -

Documentation


Star ⭐ this repo if you found it useful.

About

My Personal Kubernetes GitOps Repository

Topics

Resources

Stars

5 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages