Skip to content

kondanta/homelab

Repository files navigation

My Homelab Infrastructure 🏡

... powered by Talos, Kubernetes and GitHub Actions

Age Uptime Pods Nodes Memory Usage CPU Usage

🚀 Overview

This repository contains the full infrastructure-as-code and GitOps configuration for my home Kubernetes cluster. It is the single source of truth for the cluster's state, which is automatically managed and reconciled by FluxCD.


🍀 Kubernetes

My Kubernetes cluster is deployed with Talos Linux, a Linux distribution build spefically for running Kubernetes. I run a three bare-metal node cluster on Intel 12th gen N95's and using Longhorn for cluster persistence block, object, and file storage.


Core Components

  • Networking & Service Mesh: cilium provides eBPF-based networking, cloudflared secures ingress traffic via Cloudflare, and external-dns keeps DNS records in sync automatically.
  • Security & Secrets: cert-manager automates SSL/TLS certificate management. For secrets, I use sops to store and manage encrypted secrets in Git.
  • Storage & Data Protection: Longhorn provides distributed storage for persistent volumes.
  • Automation & CI/CD: actions-runner-controller runs self-hosted GitHub Actions runners directly in the cluster for continuous integration workflows.

GitOps

Flux watches the clusters in my kubernetes folder (see Directories below) and makes the changes to my clusters based on the state of my Git repository.

The way Flux works for me here is it will recursively search the Infrastructure/apps folder until it finds the most top level kustomization.yaml per directory and then apply all the resources listed in it. That aforementioned kustomization.yaml will generally only have a namespace resource and one or many Flux kustomizations (ks.yaml). Under the control of those Flux kustomizations there will be a HelmRelease or other resources related to the application which will be applied.

Renovate watches my entire repository looking for dependency updates, when they are found a PR is automatically created. When some PRs are merged Flux applies the changes to my cluster.

Directories

This Git repository contains the following directories under Infrastructure.

📁 infrastructure
├── 📁 apps       # applications
├── 📁 components # re-useable kustomize components
├── 📁 sources    # source of the commonly used apps(deprecated)
└── 📁 flux       # flux system configuration

This README is a living document and will be updated as the homelab evolves.


🙏 Thanks

Thanks to all the people who donate their time to the Home Operations Discord community. Be sure to check out kubesearch.dev for ideas on how to deploy applications or get ideas on what you could deploy.

About

HomeOps driven by Kubernetes and GitOps using Flux

Topics

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors