k8s/infrastructure/modules/postgres-app/job.yaml

62 lines
1.5 KiB
YAML
Raw Normal View History

2026-04-26 06:18:40 +00:00
apiVersion: batch/v1
kind: Job
metadata:
name: postgres-init
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: psql
image: postgres:16
env:
- name: PGHOST
value: pg-cluster-rw.pg-databases.svc.cluster.local
- name: PGUSER
value: postgres
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: pg-superuser-secret
key: password
- name: APP_DB
valueFrom:
secretKeyRef:
name: app-db-secret
key: database
- name: APP_USER
valueFrom:
secretKeyRef:
name: app-db-secret
key: username
- name: APP_PASSWORD
valueFrom:
secretKeyRef:
name: app-db-secret
key: password
command:
- sh
- -c
- |
psql <<EOF
DO \$\$
BEGIN
IF NOT EXISTS (SELECT FROM pg_roles WHERE rolname = '${APP_USER}') THEN
CREATE USER ${APP_USER} WITH PASSWORD '${APP_PASSWORD}';
END IF;
END
\$\$;
DO \$\$
BEGIN
IF NOT EXISTS (SELECT FROM pg_database WHERE datname = '${APP_DB}') THEN
CREATE DATABASE ${APP_DB} OWNER ${APP_USER};
END IF;
END
\$\$;
GRANT ALL PRIVILEGES ON DATABASE ${APP_DB} TO ${APP_USER};
EOF