/k3s-gitops

My home Kubernetes (k3s) cluster managed by GitOps

Primary LanguageShell

My home Kubernetes cluster ⛵


Discord k3s GitHub stars GitHub issues GitHub last commit GitHub Workflow Status pre-commit


📖  Overview

Welcome to my home Kubernetes cluster. This repo is my Kubernetes cluster in a declarative state. Flux and Helm Operator watch my deployments folder and makes the changes to my cluster based on the yaml manifests.

You'll find this is setup for home automation using Home Assistant and media automation using Sonarr, Radarr and Plex. I also use Gitea and Drone for development automation too. It would take too long to describe all the technologies running so poke around my deployments directory to see what's happening.

Feel free to open a Github issue or join our Discord if you have any questions.


🔧  Tools

Below are some of the tools I find useful for working with my cluster

Tool Purpose
direnv Set KUBECONFIG environment variable based on present working directory
git-crypt Encrypt certain files in my repository that can only be decrypted with a key on my computers
go-task Replacement for make and makefiles, who honestly likes that?
pre-commit Ensure the YAML and shell script in my repo are consistent
kubetail Tail logs in Kubernetes, also check out stern (which fork? good luck)

💻  Hardware configuration

All my Kubernetes master and worker nodes below are running bare metal Ubuntu 20.04.x

Device Count OS Disk Size Data Disk Size Ram Purpose
Odroid H2 1 256GB NVMe N/A 16GB k8s Master
Intel NUC8i5BEH 3 120GB SSD 1TB NVMe (longhorn) 32GB k8s Workers
Intel NUC8i7BEH 2 750GB SSD 1TB NVMe (longhorn) 64GB k8s Workers
Qnap NAS (rocinante) 1 N/A 8x12TB RAID6 16GB Media and shared file storage
Synology NAS (serenity) 1 N/A 8x12TB RAID6 4GB Media and shared file storage
Raspberry Pi 4 1 64GB N/A 8 GB Wireguard VPN & General Purpose Device

📝  IP addresses

This table is a reference to IP addresses in my deployments and may not be fully up-to-date

Deployment Address
nginx-ingress (external) 192.168.69.100
nginx-ingress (internal) 192.168.69.101
home-assistant 192.168.69.105
influxdb 192.168.69.109
vernemq 192.168.69.110
blocky 192.168.69.115
gitea 192.168.69.125
qbittorrent 192.168.69.130
plex 192.168.69.140
loki-syslog 192.168.69.155
coredns 192.168.69.180

🤝  Thanks

A lot of inspiration for this repo came from the following people: