pleroma/manifests/postgres/configmap.yaml
2025-07-07 15:44:49 -04:00

87 lines
No EOL
2.3 KiB
YAML

---
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