Проекты VK WorkSpace использует:
- postgresql - для миграций и инициализации tenant сервиса;
- pgbouncer - для доступа микросервисов к базе;
Мы рекомендуем использовать внешнюю базу в связке с внешним pgbouncer.
Чтобы использовать внешнюю базу укажите в env:
POSTGRES_USER="postgres"POSTGRES_PASSWORD="password"POSTGRES_PORT="5432"POSTGRES_HOST="database_service"PGBOUNCER_PORT="6432"PGBOUNCER_HOST="pgbouncer"
PGBouncer из комплекта поставки использует для инициализации покдлючения к базе auth_query:
auth_query = SELECT usename, passwd FROM pg_shadow WHERE usename=\$1
Для этого должны быть права доступа к этой таблице у учетной записи:
POSTGRES_USER="postgres"POSTGRES_PASSWORD="password"
По умолчанию учетная запись используется scram-sha-256, ее можно переопределить дополнительно, передав:
pgbouncer:environment:PGBOUNCER_AUTH_TYPE: "scram-sha-256"
Вы можете переопределить полностью все настройки в pgbouncer.ini и userlist.txt,
для этого в каталоге с проектом необходимо создать 2 файла ./configs/pgbouncer.ini и ./configs/userlist.txt.
pgbouncer.ini - настройки pgbouncer, например:
#pgbouncer.ini[databases]* = host=database_service port=5432[pgbouncer]listen_addr = 0.0.0.0listen_port = 6432auth_file = /etc/pgbouncer/userlist.txtauth_type = scram-sha-256auth_query = SELECT usename, passwd FROM pg_shadow WHERE usename=$1auth_user = postgrespool_mode = transactionmax_client_conn = 10000default_pool_size = 100min_pool_size = 0ignore_startup_parameters = extra_float_digitsso_reuseport = 1# Log settingsadmin_users = postgres# Connection sanity checks, timeoutsserver_reset_query = DISCARD ALLserver_lifetime = 3600server_idle_timeout = 60
userlist.txt - список пользователей, у которых есть доступ к базе, например
"postgres" "SCRAM-SHA-256$4096:XnvQEUPvdGrMPYNYXOf0fg==$kgehLmaFN0VOaKXOtOuATAxq6PUcBdaOsyWlcc/+lCg=:bFyTEFDUX4zXfmdUZQyBixbbL85jjWWYFMrCZK31QNc="
после в docker compose добавить их для pgbouncer
pgbouncer:volumes:- ./configs/pgbouncer.ini:/etc/pgbouncer/pgbouncer.ini- ./configs/userlist.txt:/etc/pgbouncer/userlist.txt
Технический писатель: Белова Ирина