--- apiVersion: v1 kind: ConfigMap metadata: name: postgres-init namespace: darkdork-dev data: init-db.sh: | #!/bin/bash set -e DB_USER=${DB_USER:-pleroma} DB_NAME=${DB_NAME:-pleroma} psql -U ${POSTGRES_USER:-postgres} -tc "SELECT 1 FROM pg_user WHERE usename = '$DB_USER'" | \ grep -q 1 || psql -U postgres -c "CREATE USER $DB_USER WITH ENCRYPTED PASSWORD '$DB_PASS'" psql -U ${POSTGRES_USER:-postgres} -tc "SELECT 1 FROM pg_database WHERE datname = '$DB_NAME'" | \ grep -q 1 || psql -U postgres -c "CREATE DATABASE $DB_NAME OWNER $DB_USER" psql -v ON_ERROR_STOP=1 --username "${POSTGRES_USER:-postgres}" --dbname "$DB_NAME" <<-EOSQL CREATE EXTENSION IF NOT EXISTS citext; CREATE EXTENSION IF NOT EXISTS pg_trgm; CREATE EXTENSION IF NOT EXISTS "uuid-ossp"; EOSQL --- apiVersion: v1 kind: ConfigMap metadata: name: postgres-config namespace: darkdork-dev data: postgresql.conf: | # connections settings listen_addresses = '*' max_connections = 100 # memory settings shared_buffers = 2GB effective_cache_size = 3GB work_mem = 74898kB maintenance_work_mem = 512MB temp_buffers = 32MB huge_pages = off # wal settings wal_buffers = 16MB min_wal_size = 1GB max_wal_size = 4GB # checkpoint settings checkpoint_completion_target = 0.9 checkpoint_timeout = 15min checkpoint_flush_after = 0 # query planner settings default_statistics_target = 100 random_page_cost = 1.1 seq_page_cost = 1.0 cpu_tuple_cost = 0.01 cpu_index_tuple_cost = 0.005 cpu_operator_cost = 0.0025 effective_io_concurrency = 200 # write performance optimizations synchronous_commit = off commit_delay = 10000 commit_siblings = 5 # bg writer settings bgwriter_delay = 50ms bgwriter_lru_maxpages = 1000 bgwriter_lru_multiplier = 10.0 # paralel query settings max_worker_processes = 8 max_parallel_workers = 8 max_parallel_workers_per_gather = 2 max_parallel_maintenance_workers = 2 # misc settings max_prepared_transactions = 0 # log settings log_destination = 'stderr' logging_collector = on log_directory = 'pg_log' log_filename = 'postgresql-%Y-%m-%d_%H%M%S.log' log_min_duration_statement = 1000 log_lock_waits = on log_checkpoints = on