diff --git a/infra/k8s/gitlab/postgres-init.yaml b/infra/k8s/gitlab/postgres-init.yaml new file mode 100644 index 000000000..c63baeddf --- /dev/null +++ b/infra/k8s/gitlab/postgres-init.yaml @@ -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