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 customizationChart.yaml- Chart metadata (where applicable)templates/- Kubernetes resource templates- Persistent volume (PV) and persistent volume claim (PVC) for stateful services
Quick Start
# Add Helm repositories as needed
helm repo add <repo-name> <repo-url>
helm repo update
# Deploy a service
helm install <release-name> <chart-path> -f <chart-path>/values.yaml -n <namespace>
📝 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.yamltemplates in major services- SSL termination via Letsencrypt
- Pretty hostname routing (e.g.,
bitwarden.example.com)
📚 Additional Resources
- backup.md - Backup and recovery procedures
- Individual service notes in each subdirectory (notes.md, NOTES.md)
Description
Languages
Smarty
100%