Skip to content

Repository for my Talos Linux/Kubernetes cluster

License

Notifications You must be signed in to change notification settings

chrede88/home-ops

Repository files navigation

Talos Linux logo Kubernetes logo

My Home-ops Repository ⚡

... powered by Talos Linux and Kubernetes

Talos version Kubernetes version Fluxcd version Open Pull Requests
Cluster Age Cluster Up Time Cluster Nodes Cluster Pods Cluster CPU Cluster Memory Ceph Cluster Health

🚀 Introduction

This repository holds all information about my homelab and kubernetes cluster. I'm doing my best to adhere to the principles of infrastructure as code (IaC) and GitOps.


🍀 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 NUC's and using Rook for cluster persistence block, object, and file storage.

GitOps

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

Flux is pointed at the two top level Flux kustomization (ks.yaml) which points at the kubernetes/apps folder and some other general common components. Flux will recursively search the kubernetes/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 define a few resource and one or many Flux kustomizations. Under the control of those Flux kustomizations there will be the actual resources related to each application.

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

Directories

The layout of the repository is as follows:

📁 .github              # Github related files
📁 docs                 # My running documentation
📁 network              # My internal network setup
📁 cluster
├── 📁 kubernetes       # Kubernetes cluster definitions
│   ├── 📁 apps         # application manifests
│   └── 📁 flux         # flux system configuration
└── 📁 talos            # Talos configuration stuff

Docs

I keep running docs where I try to document my journey. Hopefully others will find them helpful.


⚙ Hardware

Device Num OS Disk Size Data Disk Size Ram OS Function
Intel NUC 12th i5 3 500GB SATA SSD 2TB NVMe SSD 64GB Talos Kubernetes
Rasberry Pi 4 1 64GB SD card - 4GB Debian GNU/Linux 12 PiHole backup
Unifi Gateway Max 1 - - - - Router
Unifi Cloudkey Gen 2+ 1 - - - - Unifi OS
Unifi Switch Ultra 1 - - - - PoE 1Gb Switch
Unifi U6+ AP 1 - - - - Wifi

🙏 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.