#!/usr/bin/env bash set -euo pipefail # Deploy Postgres for la-huasca in its own namespace NAMESPACE="${NAMESPACE:-lahuasca}" SECRET_NAME="la-huasca-db-secrets" PVC_NAME="postgres-data" # Generate a secure random password if secret doesn't exist yet if ! kubectl get secret "$SECRET_NAME" -n "$NAMESPACE" >/dev/null 2>&1; then echo "==> Generating database password ..." PASSWORD=$(openssl rand -base64 32 | tr -d '\n') DATABASE_URL="postgres://lahuasca:$PASSWORD@postgres.$NAMESPACE.svc.cluster.local:5432/lahuasca" kubectl create secret generic "$SECRET_NAME" \ --namespace "$NAMESPACE" \ --from-literal=POSTGRES_USER=lahuasca \ --from-literal=POSTGRES_PASSWORD="$PASSWORD" \ --from-literal=POSTGRES_DB=lahuasca \ --from-literal=DATABASE_URL="$DATABASE_URL" echo "==> Created $SECRET_NAME" else echo "==> $SECRET_NAME already exists, leaving it" fi # Ensure PVC exists if ! kubectl get pvc "$PVC_NAME" -n "$NAMESPACE" >/dev/null 2>&1; then echo "==> Creating Postgres PVC ..." cat < Waiting for postgres to be ready ..." kubectl rollout status deployment/postgres -n "$NAMESPACE" --timeout=120s echo "" echo "Postgres ready in namespace $NAMESPACE" echo "To reveal the password:" echo " kubectl get secret $SECRET_NAME -n $NAMESPACE -o jsonpath='{.data.DATABASE_URL}' | base64 -d"