Skip to content

Mono repository for selfhosted infrastructure based on Kubernetes. Managed by Flux using IaC And GitOps principles

License

Notifications You must be signed in to change notification settings

s0undy/kube-ops

Repository files navigation

My homelab kubernetes repository 🤘

... managed with Flux, mended by Renovate, broken by me

Kubernetes Ubuntu GitHub last commit GitHub issues GitHub pull requests GitHub repository stars

K8s Applications

While all aplications are created equal(or not), some are more important than others. Following below is a list of the core-components of the cluster.

Core

  • Flux: GitOps operator for managing a Kubernetes clusters from a Git repository.
  • Kube-VIP: Load balancer for the Kubernetes control plane nodes.
  • MetalLB: MetalLB load-balancer implementation for bare metal clusters.
  • Cert-Manager: Operator issuing SSL certificates and storing them in kubernetes resources.
  • Calico: Networking and security for containers and Kubernetes services networking.
  • ExternalDNS: Operator publishing DNS records to public DNS based on Kubernetes ingresses.
  • K8s-Gateway: DNS Resolver providing local DNS to Kubernetes ingresses.
  • NGINX Ingress Controller: Kubernetes ingress controller used as a HTTP reverse proxy of ingresses.
  • Rook-Ceph: Distributed block storage for persistent storage.
  • SOPS: Secret secrets for Kubernetes, Ansible and Terraform that can be commited to Git.

Applications

In no specific order heres rest of what's running in the cluster. Subject to change

  • CloudNativePG: Operator covering full lifecycle of HA PostgreSQL database cluster.
  • MariaDB: MariaDB SQL database server.
  • pgAdmin: PostgreSQL administration and development.
  • phpMyAdmin: MariaDB/MySQL administration and development.
  • Redis: In-memory data structure store. Key-value database. HA using Redis Sentinel.
  • HAProxy: Loadbalancer for HA-Redis Cluster.
  • qBittorent: Downloading client for Linux ISO's. ☠️
  • Echo-Server: Connection testing.
  • Hajimari: Simplistic dashboard with Kubernetes application discovery.
  • Weave GitOps: Dashboard for Flux GitOps
  • Nextcloud: OneDrive replcement for filesharing and document editor using Collabra add-on
  • Intel-device-plugin: Provides access to Intel GPU devices.
  • Local Path Provisioner: Provides a way for Kubernetes to utilize local storage of each node.
  • Metrics Server: Collects metrics from Kublets and exposes them in Kubernetes API-server.
  • Node Feature Discovery: Discovery of hardware features and system configuration.
  • Reloader: Watches for changes in ConfigMaps and Secrets to perform rolling uppgrades on Deployments.
  • Plex: Self-Hosted Media server
  • Prowlarr: Indexer manager/proxy. ☠️
  • Sonarr: PVR monitoring RSS feeds. ☠️
  • Radarr: PVR monitoring RSS feeds. ☠️
  • Goldilocks: Provides resource recommendations using VPA in Kubernetes.
  • Grafana: Visualization for various metrics collected inside the cluster.
  • Prometheus: Metrics&Altering - Deployed using Kube-Prometheus-Stack.
  • Kubernetes Dashboard: Basic Kubernetes interface of applications.
  • VPA: Used to provide resource recommendations via Goldilocks
  • Cloudflare DDNS Used together with a shell-script to update public DNS record in Cloudflare
  • MinIO: Object Storage - Used to expose a NFS share as a S3 endpoint.
  • System Upgrade Controller: Used to plan and execute upgrades of Kubernetes nodes.
  • Pod-Gateway: Used to route trafic from pods through another gateway. Uses gateway admision controller to mutate pods.
  • Littlelink: Selfhosted DIY alternative to Linktree
  • Matomo: Self-hosted alternative to Google Analytics

Hardware

Device Count OS Disk Size Data Disk Size Ram Operating System Purpose
Lenovo ThinkCentre M710q 3 128GB SSD - 16GB Ubuntu 22.04 Kubernetes Control Plane
Lenovo ThinkCentre M920q 3 128GB SSD 1TB NVMe Crucial P3 (ceph) 32GB Ubuntu 22.04 Kubernetes Workers
Synology DS412 1 - 4x3TB SHR 2GB DSM NFS
Netgear ReadyNAS 2100 1 - 4x2TB 2GB ReadyNAS OS6 Backup & Testing
Raspberry Pi 4 1 32GB (SD) - 4GB Raspbian DNS-Backup
UniFi Dream Machine Pro 1 - - - - Firewall/Controller
UniFi Switch 16-POE 150W 1 - - - - Switching
UniFi UAP-AC-LR 1 - - - - Wirless Networking
IKEA Tradfri Gateway 1 - - - - Smart Home
HP ML350p Gen8 1 600GB 6x300GB 64GB ESXI Random tests not used for K8s

🤝 Thanks

Shoutout to k8s@home and specially onedr0p.

TODO

Continue writing this readme to add installation guide, list of used apps, hardware and more.