apiVersion: batch/v1 kind: Job metadata: name: e2e-test-app-db-init labels: component: db-init spec: template: metadata: labels: component: db-init spec: restartPolicy: OnFailure securityContext: runAsNonRoot: true runAsUser: 999 runAsGroup: 999 seccompProfile: type: RuntimeDefault containers: - name: postgres-init image: postgres:15 securityContext: allowPrivilegeEscalation: false capabilities: drop: - ALL readOnlyRootFilesystem: false env: - name: PGHOST value: {{ .dbHost }} - name: PGUSER value: postgres - name: PGPASSWORD valueFrom: secretKeyRef: name: e2e-test-app-secrets key: postgres.password - name: DB_NAME value: {{ .dbName }} - name: DB_USER value: {{ .dbUser }} - name: DB_PASSWORD valueFrom: secretKeyRef: name: e2e-test-app-secrets key: dbPassword command: - /bin/bash - -c - | set -e echo "Waiting for PostgreSQL to be ready..." until pg_isready; do echo "PostgreSQL is not ready - sleeping" sleep 2 done echo "PostgreSQL is ready" echo "Creating database and user..." psql -c "CREATE DATABASE ${DB_NAME};" || echo "Database ${DB_NAME} already exists" psql -c "CREATE USER ${DB_USER} WITH PASSWORD '${DB_PASSWORD}';" || echo "User ${DB_USER} already exists" psql -c "ALTER USER ${DB_USER} WITH PASSWORD '${DB_PASSWORD}';" psql -c "GRANT ALL PRIVILEGES ON DATABASE ${DB_NAME} TO ${DB_USER};" psql -d ${DB_NAME} -c "GRANT ALL ON SCHEMA public TO ${DB_USER};" echo "Creating test data table..." psql -d ${DB_NAME} -c "CREATE TABLE IF NOT EXISTS e2e_test_data (id SERIAL PRIMARY KEY, key TEXT UNIQUE NOT NULL, value TEXT NOT NULL, created_at TIMESTAMP DEFAULT NOW());" psql -d ${DB_NAME} -c "GRANT ALL ON TABLE e2e_test_data TO ${DB_USER};" psql -d ${DB_NAME} -c "GRANT USAGE, SELECT ON SEQUENCE e2e_test_data_id_seq TO ${DB_USER};" echo "Database initialization complete"