infra(gitlab): postgres init job for GitLab database
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
62
infra/k8s/gitlab/postgres-init.yaml
Normal file
62
infra/k8s/gitlab/postgres-init.yaml
Normal file
@@ -0,0 +1,62 @@
|
||||
apiVersion: batch/v1
|
||||
kind: Job
|
||||
metadata:
|
||||
name: gitlab-postgres-init
|
||||
namespace: foxhunt
|
||||
labels:
|
||||
app.kubernetes.io/name: gitlab-postgres-init
|
||||
app.kubernetes.io/part-of: foxhunt
|
||||
spec:
|
||||
ttlSecondsAfterFinished: 300
|
||||
template:
|
||||
spec:
|
||||
nodeSelector:
|
||||
k8s.scaleway.com/pool-name: always-on
|
||||
restartPolicy: Never
|
||||
containers:
|
||||
- name: init
|
||||
image: timescale/timescaledb:latest-pg16
|
||||
command:
|
||||
- bash
|
||||
- -c
|
||||
- |
|
||||
set -euo pipefail
|
||||
export PGPASSWORD="$POSTGRES_PASSWORD"
|
||||
|
||||
# Wait for postgres to be ready
|
||||
until pg_isready -h postgres -U foxhunt; do
|
||||
echo "Waiting for postgres..."
|
||||
sleep 2
|
||||
done
|
||||
|
||||
# Create gitlab database and user
|
||||
psql -h postgres -U foxhunt -d foxhunt -c "
|
||||
DO \$\$
|
||||
BEGIN
|
||||
IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = 'gitlab') THEN
|
||||
CREATE ROLE gitlab WITH LOGIN PASSWORD '$GITLAB_DB_PASSWORD';
|
||||
END IF;
|
||||
END
|
||||
\$\$;
|
||||
"
|
||||
psql -h postgres -U foxhunt -c "
|
||||
SELECT 'CREATE DATABASE gitlab OWNER gitlab'
|
||||
WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = 'gitlab')
|
||||
\gexec"
|
||||
psql -h postgres -U foxhunt -d gitlab -c "CREATE EXTENSION IF NOT EXISTS pg_trgm;"
|
||||
psql -h postgres -U foxhunt -d gitlab -c "CREATE EXTENSION IF NOT EXISTS btree_gist;"
|
||||
psql -h postgres -U foxhunt -d gitlab -c "GRANT ALL PRIVILEGES ON DATABASE gitlab TO gitlab;"
|
||||
psql -h postgres -U foxhunt -d gitlab -c "GRANT ALL ON SCHEMA public TO gitlab;"
|
||||
|
||||
echo "GitLab database initialized successfully."
|
||||
env:
|
||||
- name: POSTGRES_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: foxhunt-secrets
|
||||
key: db-password
|
||||
- name: GITLAB_DB_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: gitlab-secrets
|
||||
key: db-password
|
||||
Reference in New Issue
Block a user