# Helm Chart Update Summary

## Overview
The Helm chart has been updated to deploy a complete dating app with PostgreSQL, backend API, and frontend on Kubernetes.

## Architecture

### Components Deployed:
1. **PostgreSQL StatefulSet** - Database for the application
   - 1 replica (configurable)
   - 10Gi persistent volume
   - Headless service for StatefulSet operations

2. **Backend Deployment** - FastAPI application
   - 2 replicas (configurable)
   - Exposed via ClusterIP service on port 8000
   - Health checks enabled (readiness & liveness probes)

3. **Frontend Deployment** - React application
   - 2 replicas (configurable)
   - Exposed via ClusterIP service on port 80
   - Health checks enabled (readiness & liveness probes)

### Ingresses (2):
1. **Backend Ingress**
   - Host: `api-dateme.dvirlabs.com`
   - Routes to: backend service port 8000

2. **Frontend Ingress**
   - Host: `dateme.dvirlabs.com`
   - Routes to: frontend service port 80

## Domain Configuration

| Component | Domain | Type |
|-----------|--------|------|
| Frontend | dateme.dvirlabs.com | Ingress |
| Backend API | api-dateme.dvirlabs.com | Ingress |
| Database | postgres.dating-app.svc.cluster.local | Internal Service |

## Frontend to Backend Communication

The frontend is configured to call the backend via the ingress domain:
- **VITE_API_URL**: `https://api-dateme.dvirlabs.com`

This environment variable is injected via ConfigMap into the frontend deployment.

## CORS Configuration

The backend is configured to accept requests from:
- `http://localhost:5173` (dev)
- `http://localhost:3000` (dev)
- `http://localhost` (dev)
- `https://dateme.dvirlabs.com` (production frontend)

## Database Connection

Backend connects to PostgreSQL via:
```
postgresql://dating_app_user:Aa123456@postgres.dating-app.svc.cluster.local:5432/dating_app
```

## Deployment Commands

```bash
# Install the chart
helm install dating-app ./helm/dating-app

# Upgrade the chart
helm upgrade dating-app ./helm/dating-app

# With custom values
helm install dating-app ./helm/dating-app -f values-production.yaml
```

## Prerequisites

1. **Kubernetes Cluster** with NGINX Ingress Controller
2. **DNS Configuration** - Point domains to your Kubernetes ingress controller:
   - `dateme.dvirlabs.com` → Ingress IP
   - `api-dateme.dvirlabs.com` → Ingress IP
3. **SSL/TLS Certificates** (optional, configure via annotations)

## Notes

- All components are deployed in the `dating-app` namespace
- Storage class defaults to cluster default if not specified
- Update `JWT_SECRET` in production values
- Adjust replica counts and resource limits based on your cluster capacity
- PostgreSQL credentials are in the ConfigMap (use external secrets in production)
