dateme/HELM_CHART_UPDATE.md
2025-12-17 06:30:48 +02:00

2.7 KiB

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

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