| 1 | #!/bin/bash
|
|---|
| 2 | set -e
|
|---|
| 3 |
|
|---|
| 4 | # ── Config ────────────────────────────────────────────────────────────────────
|
|---|
| 5 | read -p "DockerHub username: " DOCKERHUB_USERNAME
|
|---|
| 6 | read -p "DB password (choose any): " DB_PASSWORD
|
|---|
| 7 | read -p "JWT secret (min 32 chars): " JWT_SECRET
|
|---|
| 8 |
|
|---|
| 9 | SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
|
|---|
| 10 |
|
|---|
| 11 | echo ""
|
|---|
| 12 | echo "==> Switching to docker-desktop context..."
|
|---|
| 13 | kubectl config use-context docker-desktop
|
|---|
| 14 |
|
|---|
| 15 | echo "==> Applying namespace..."
|
|---|
| 16 | kubectl apply -f "$SCRIPT_DIR/namespace.yaml"
|
|---|
| 17 |
|
|---|
| 18 | echo "==> Creating secrets..."
|
|---|
| 19 | kubectl create secret generic trekr-secrets \
|
|---|
| 20 | --namespace=trekr \
|
|---|
| 21 | --from-literal=db-password="$DB_PASSWORD" \
|
|---|
| 22 | --from-literal=jwt-secret="$JWT_SECRET" \
|
|---|
| 23 | --save-config \
|
|---|
| 24 | --dry-run=client -o yaml | kubectl apply -f -
|
|---|
| 25 |
|
|---|
| 26 | echo "==> Creating DB init ConfigMap from DDL..."
|
|---|
| 27 | kubectl create configmap trekr-db-init \
|
|---|
| 28 | --namespace=trekr \
|
|---|
| 29 | --from-file=01-ddl.sql="$SCRIPT_DIR/../db-scripts/ddl.sql" \
|
|---|
| 30 | --save-config \
|
|---|
| 31 | --dry-run=client -o yaml | kubectl apply -f -
|
|---|
| 32 |
|
|---|
| 33 | echo "==> Applying ConfigMaps..."
|
|---|
| 34 | kubectl apply -f "$SCRIPT_DIR/configmaps.yaml"
|
|---|
| 35 |
|
|---|
| 36 | echo "==> Applying Postgres StatefulSet..."
|
|---|
| 37 | kubectl apply -f "$SCRIPT_DIR/postgres.yaml"
|
|---|
| 38 |
|
|---|
| 39 | echo "==> Waiting for Postgres..."
|
|---|
| 40 | kubectl rollout status statefulset/postgres -n trekr --timeout=120s
|
|---|
| 41 |
|
|---|
| 42 | echo "==> Applying Backend Deployment..."
|
|---|
| 43 | sed "s|DOCKERHUB_USERNAME|$DOCKERHUB_USERNAME|g" "$SCRIPT_DIR/backend.yaml" | kubectl apply -f -
|
|---|
| 44 |
|
|---|
| 45 | echo "==> Applying Frontend Deployment..."
|
|---|
| 46 | sed "s|DOCKERHUB_USERNAME|$DOCKERHUB_USERNAME|g" "$SCRIPT_DIR/frontend.yaml" | kubectl apply -f -
|
|---|
| 47 |
|
|---|
| 48 | echo "==> Applying Ingress..."
|
|---|
| 49 | kubectl apply -f "$SCRIPT_DIR/ingress.yaml"
|
|---|
| 50 |
|
|---|
| 51 | echo "==> Waiting for backend rollout..."
|
|---|
| 52 | kubectl rollout status deployment/backend -n trekr --timeout=180s
|
|---|
| 53 |
|
|---|
| 54 | echo "==> Waiting for frontend rollout..."
|
|---|
| 55 | kubectl rollout status deployment/frontend -n trekr --timeout=60s
|
|---|
| 56 |
|
|---|
| 57 | echo ""
|
|---|
| 58 | echo "==> Adding trekr.local to /etc/hosts (needs sudo)..."
|
|---|
| 59 | if ! grep -q "trekr.local" /etc/hosts; then
|
|---|
| 60 | echo "127.0.0.1 trekr.local" | sudo tee -a /etc/hosts
|
|---|
| 61 | fi
|
|---|
| 62 |
|
|---|
| 63 | echo ""
|
|---|
| 64 | echo "✅ Done! Open http://trekr.local in your browser."
|
|---|