2026-04-26 06:18:40 +00:00
|
|
|
apiVersion: batch/v1
|
|
|
|
|
kind: Job
|
|
|
|
|
metadata:
|
|
|
|
|
name: postgres-init
|
|
|
|
|
spec:
|
2026-04-26 23:08:25 +00:00
|
|
|
dependsOn:
|
|
|
|
|
- name: infrastructure
|
2026-04-26 06:18:40 +00:00
|
|
|
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:
|
2026-04-26 23:22:05 +00:00
|
|
|
name: pg-cluster-secrets
|
|
|
|
|
key: pg-cluster-root-password
|
2026-04-26 06:18:40 +00:00
|
|
|
|
|
|
|
|
- name: APP_DB
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
2026-04-27 00:58:10 +00:00
|
|
|
name: $(APP_SECRET_NAME)
|
2026-04-26 06:18:40 +00:00
|
|
|
key: database
|
|
|
|
|
- name: APP_USER
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
2026-04-27 00:58:10 +00:00
|
|
|
name: $(APP_SECRET_NAME)
|
2026-04-26 06:18:40 +00:00
|
|
|
key: username
|
|
|
|
|
- name: APP_PASSWORD
|
|
|
|
|
valueFrom:
|
|
|
|
|
secretKeyRef:
|
2026-04-27 00:58:10 +00:00
|
|
|
name: $(APP_SECRET_NAME)
|
2026-04-26 06:18:40 +00:00
|
|
|
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
|