Skip to content

lltr/home-cluster

Repository files navigation

My Talos Kubernetes cluster

External-Status-Page

Talos Kubernetes

Age-Days   Uptime-Days   Node-Count  


Overview

This is a mono repository for my home Kubernetes cluster. Flux watches the cluster directory and makes changes to the cluster based on the YAML manifests.


🎨 Cluster components

Cluster management

  • Talos: Using bare talosctl
  • fluxcd: Sync kubernetes cluster with this repository.
  • SOPS: Encrypts secrets which is safe to store - even to a public repository.
  • go-task: Custom helper commands

Core components

  • flannel: Container Network Interface for networking between pods.
  • metallb: Bare-metal load balancer.
  • cert-manager: Configured to create TLS certs for all ingress services automatically using LetsEncrypt.
  • ingress-nginx: Ingress controller for services.
  • external-dns: External DNS manager for all ingress.
  • rook-ceph: Cloud native distributed block storage for Kubernetes
  • kube-prometheus-stack: Scraping metrics from the entire cluster
  • grafana: Visualization for the metrics from Prometheus and other datasources
  • external-secrets: Integrates external secrets management with OnePassword Connect
  • local-path-provisioner - Provision persistent local storage with Kubernetes to avoid write amplification for default soft replicated applications

📂 Repository structure

The Git repository contains the following directories under kubernetes and are ordered below by how Flux will apply them.

📁 kubernetes      # Kubernetes cluster defined as code
├─📁 bootstrap     # Flux installation
├─📁 flux          # Main Flux configuration of repository
├─📁 core          # Core applications deployed into the cluster grouped by namespace
├─📁 apps          # Apps deployed after core into the cluster grouped by namespace
📁 archive       # Archived Kubernetes application manifests

🤝 Thanks

k8s-at-home, k8s-at-home-search