Files
helm-charts/pocket-id/templates/db-init-job.yaml
T

72 lines
3.0 KiB
YAML

{{- if .Values.dbInit.enabled }}
apiVersion: batch/v1
kind: Job
metadata:
name: {{ .Release.Name }}-db-init
annotations:
"helm.sh/hook": post-install
"helm.sh/hook-weight": "-5"
"helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
spec:
template:
spec:
restartPolicy: OnFailure
containers:
- name: postgres-init
image: {{ .Values.dbInit.image }}
command:
- /bin/sh
- -c
- |
set -e
until pg_isready -h $PGHOST -p $PGPORT -U $ADMIN_USER; do
echo "Waiting for PostgreSQL to be ready..."
sleep 2
done
export PGPASSWORD=$POSTGRES_ADMIN_PASSWORD
echo "Creating user $DB_USER if missing..."
psql -h $PGHOST -p $PGPORT -U $ADMIN_USER -d postgres -tc "SELECT 1 FROM pg_roles WHERE rolname='$DB_USER'" | grep -q 1 || \
psql -h $PGHOST -p $PGPORT -U $ADMIN_USER -d postgres -c "CREATE USER $DB_USER WITH PASSWORD '${DB_USER_PASSWORD}';"
echo "Creating database $DB_NAME if missing..."
psql -h $PGHOST -p $PGPORT -U $ADMIN_USER -d postgres -tc "SELECT 1 FROM pg_database WHERE datname='$DB_NAME'" | grep -q 1 || \
psql -h $PGHOST -p $PGPORT -U $ADMIN_USER -d postgres -c "CREATE DATABASE $DB_NAME OWNER $DB_USER;"
echo "Granting privileges..."
psql -h $PGHOST -p $PGPORT -U $ADMIN_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON DATABASE $DB_NAME TO $DB_USER;"
psql -h $PGHOST -p $PGPORT -U $ADMIN_USER -d $DB_NAME -c "GRANT ALL PRIVILEGES ON SCHEMA public TO $DB_USER;"
psql -h $PGHOST -p $PGPORT -U $ADMIN_USER -d $DB_NAME -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON TABLES TO $DB_USER;"
psql -h $PGHOST -p $PGPORT -U $ADMIN_USER -d $DB_NAME -c "ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT ALL ON SEQUENCES TO $DB_USER;"
echo "Database initialization complete."
env:
- name: PGHOST
value: {{ .Values.dbInit.host | quote }}
- name: PGPORT
value: {{ .Values.dbInit.port | quote }}
- name: ADMIN_USER
value: {{ .Values.dbInit.adminUser | quote }}
- name: DB_NAME
value: {{ .Values.dbInit.database | quote }}
- name: DB_USER
value: {{ .Values.dbInit.user | quote }}
- name: POSTGRES_ADMIN_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.existingSecret }}
key: {{ .Values.dbInit.adminPasswordSecretKey }}
- name: DB_USER_PASSWORD
valueFrom:
secretKeyRef:
name: {{ .Values.existingSecret }}
key: {{ .Values.dbInit.userPasswordSecretKey }}
resources:
requests:
memory: "64Mi"
cpu: "50m"
limits:
memory: "128Mi"
cpu: "100m"
{{- end }}