infra/k8s/pg-init/harbor-db.yaml
2026-03-10 23:11:12 +08:00

44 lines
1.4 KiB
YAML

apiVersion: batch/v1
kind: Job
metadata:
name: harbor-db-init-v1
namespace: pg-init
spec:
ttlSecondsAfterFinished: 300
template:
spec:
restartPolicy: OnFailure
containers:
- name: db-init
image: postgres:17
env:
- name: PGHOST
value: pgbouncer.default.svc.cluster.local
- name: PGPORT
value: "6432"
- name: PGUSER
value: pginit
- name: PGDATABASE
value: postgres
- name: PGPASSWORD
valueFrom:
secretKeyRef:
name: pg-init-secret
key: password
- name: HARBOR_DB_PASSWORD
valueFrom:
secretKeyRef:
name: harbor-db-bootstrap-secret
key: password
command:
- bash
- -ec
- |
psql -c "SELECT 1 FROM pg_roles WHERE rolname='harbor'" | grep -q 1 || \
psql -c "CREATE USER harbor WITH PASSWORD '${HARBOR_DB_PASSWORD}';"
psql -c "GRANT harbor TO pginit;"
psql -c "SELECT 1 FROM pg_database WHERE datname='harbor'" | grep -q 1 || \
psql -c "CREATE DATABASE harbor OWNER harbor;"
psql -c "GRANT ALL PRIVILEGES ON DATABASE harbor TO harbor;"
psql -d harbor -c "GRANT ALL ON SCHEMA public TO harbor;"