Files
homelab/k8s/data/db-init-job.yaml
T

68 lines
1.8 KiB
YAML
Raw Normal View History

apiVersion: batch/v1
kind: Job
metadata:
name: db-schema-init
namespace: ddb
labels:
app: postgresql-init
layer: data
spec:
backoffLimit: 3
ttlSecondsAfterFinished: 3600 # Keep Job for 1 hour after completion
template:
metadata:
labels:
app: postgresql-init
spec:
serviceAccountName: default
restartPolicy: Never
containers:
- name: schema-init
image: postgres:16.2-alpine
env:
- name: PGHOST
value: ddb-cluster-rw.ddb.svc.cluster.local
- name: PGPORT
value: "5432"
- name: PGDATABASE
value: app
- name: PGUSER
value: app
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: ddb-cluster-app
key: password
command:
- /bin/sh
- -c
- |
# Wait for cluster to be ready
echo "Waiting for PostgreSQL to be ready..."
until pg_isready -h $PGHOST -p $PGPORT -U $PGUSER; do
echo "Waiting..."
sleep 5
done
echo "Creating schemas..."
# Create schemas from ConfigMap
psql -h $PGHOST -p $PGPORT -U $PGUSER -d $PGDATABASE << 'EOF'
CREATE SCHEMA IF NOT EXISTS authentik;
GRANT USAGE ON SCHEMA authentik TO app;
GRANT CREATE ON SCHEMA authentik TO app;
CREATE SCHEMA IF NOT EXISTS temporal;
GRANT USAGE ON SCHEMA temporal TO app;
GRANT CREATE ON SCHEMA temporal TO app;
CREATE SCHEMA IF NOT EXISTS vault;
GRANT USAGE ON SCHEMA vault TO app;
GRANT CREATE ON SCHEMA vault TO app;
GRANT USAGE ON SCHEMA public TO app;
GRANT CREATE ON SCHEMA public TO app;
EOF
echo "✓ Schema initialization complete"