# Kubernetes Cluster Configuration A comprehensive Helm-based Kubernetes cluster setup with multiple applications and services organized by function. ## 📁 Project Structure ### Core Infrastructure #### **Cluster** - Storage class configuration for persistent volumes #### **Traefik** (`traefik/`) - Ingress controller and reverse proxy - Routes external traffic to internal services - Helm values configuration included #### **Shared Database** (`shared-db/`) - Centralized PostgreSQL database instance - Shared across multiple applications - Persistent volume and claim configuration - NodePort service for external access ### Applications #### **Bitwarden** (`bitwarden/`) - Password manager and secrets vault - Full Helm chart with templates and customizable values - Persistent storage configuration #### **Vaultwarden** (`vaultwarden/`) - Open-source Bitwarden alternative - Complete Helm chart with deployment templates - Ingress, service, and persistence configuration #### **Gitea** (`gitea/`) - Git hosting service - Persistent volume and PostgreSQL backed - Values configuration for customization #### **Nextcloud** (`nextcloud/`) - File sync, sharing, and collaboration platform - Separate persistent volumes for data and PostgreSQL - Notification push service included - Custom ingress configuration #### **Immich** (`immich/`) - Photo and video backup service - Sub-chart for PostgreSQL database management - Master node persistent volume - PostgreSQL and application storage #### **Linkwarden Stack** (`linkwarden-stack/`) - Link management and bookmarking service - Complete Helm chart with ConfigMap, deployment, and ingress - Persistent storage configuration #### **Mumble** (`mumble/`) - Voice communication and VoIP service - Helm values for configuration #### **Letsencrypt** (`letsencrypt/`) - Automated SSL certificate provisioning - Integrations with ingress controllers ### Observability & Monitoring #### **Observability Stack** (`observability/`) ##### **Prometheus** (`observability/prometheus/`) - Metrics collection and time-series database - Custom storage class for performance - Persistent volume configuration ##### **Loki** (`observability/loki/`) - Log aggregation system - Companion to Prometheus - Dedicated storage configuration ##### **Grafana** (`observability/grafana/`) - Metrics and logs visualization - Loki backend for log exploration - Dashboard and alerting capabilities ##### **Alloy** (`observability/alloy/`) - Telemetry collection agent - Data collection for Prometheus and Loki ## 🚀 Deployment Each service is configured as a Helm chart with: - `values.yaml` - Configuration and customization - `Chart.yaml` - Chart metadata (where applicable) - `templates/` - Kubernetes resource templates - Persistent volume (PV) and persistent volume claim (PVC) for stateful services ### Quick Start ```bash # Add Helm repositories as needed helm repo add helm repo update # Deploy a service helm install -f /values.yaml -n ``` ## 📝 Storage Configuration All persistent services include: - **pv-\*.yaml** - PersistentVolume definitions - **pvc-\*.yaml** - PersistentVolumeClaim definitions - Reference storage class configurations ## 🔗 Ingress Routes Traefik handles ingress routing with: - `ingress.yaml` templates in major services - SSL termination via Letsencrypt - Pretty hostname routing (e.g., `bitwarden.example.com`) ## 📚 Additional Resources - [backup.md](backup.md) - Backup and recovery procedures - Individual service notes in each subdirectory (notes.md, NOTES.md)