Files
kube-cluster/README.md
2026-03-31 15:30:40 +00:00

125 lines
3.6 KiB
Markdown

# 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 <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.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)