7.3. Создание базы данных PostgreSQL в DevSpace
Это руководство проведёт вас через весь процесс: от создания кластера PostgreSQL в интерфейсе DevSpace до первого успешного подключения с локального компьютера. Если вы раньше администрировали «обычный» PostgreSQL на сервере или в облаке и впервые работаете с платформой — не беспокойтесь, здесь не нужно знать Kubernetes. Всё делается через веб-интерфейс. На видео наглядно показан процесс создания и подключения, чтобы было легче ориентироваться в интерфейсе.
ЧТО ТАКОЕ POSTGRESQL В DEVSPACE
В DevSpace каждый кластер PostgreSQL — это не одна виртуальная машина с базой данных, а группа контейнеров, которыми управляет платформа. Один из них всегда является primary (он принимает запись), остальные — реплики (они синхронизируют данные с primary и могут обслуживать чтение). Если primary вдруг становится недоступен, платформа автоматически переключает одну из реплик на его роль — без вашего участия.
Для вас это означает следующее:
-
вы получаете высокодоступную базу данных «из коробки»;
-
не нужно настраивать репликацию вручную;
-
подключение происходит через постоянный IP-адрес (LoadBalancer), даже если внутри кластера произошло переключение.
Шаг 1. Откройте ваш тенант
Войдите в DevSpace и убедитесь, что у вас уже создан тенант — изолированное рабочее пространство. Создание тенанта описано в отдельном руководстве; здесь мы предполагаем, что тенант уже существует и его статус — Online.
Зайдите в тенант и откройте раздел управления приложениями.
Шаг 2. Перейдите к созданию PostgreSQL
В меню раздела PaaS выберите пункт PostgreSQL. Вы увидите список существующих инстансов (если они есть) и кнопку Add (плюсик) для создания нового.
Нажмите Add — откроется форма создания.
Шаг 3. Заполните форму создания
Форма имеет две вкладки: OpenAPI (визуальная форма) и Manual (редактирование YAML напрямую). Рекомендуем начать с OpenAPI — она нагляднее.
ИМЯ ИНСТАНСА
В поле name введите имя вашего инстанса. Это внутренний идентификатор, который также станет частью адресов сервисов внутри платформы. Используйте строчные буквы и дефисы, например my-postgres или graphfarmer.
ПАРАМЕТРЫ МАСШТАБИРОВАНИЯ И РЕСУРСОВ
|
Поле
|
Что задаёт
|
Рекомендация
|
|
replicas
|
Количество нод в кластере (primary + реплики)
|
1 для разработки, 2–3 для продакшена
|
|
resourcesPreset
|
Готовый профиль CPU и памяти
|
micro для старта; выберите medium или выше под нагрузкой
|
|
resources (CPU / Memory)
|
Явные значения ресурсов (переопределяют пресет)
|
Указывайте, если знаете точные требования
|
|
size
|
Размер диска для данных
|
10Gi по умолчанию; оцените объём данных с запасом
|
|
storageClass
|
Тип хранилища
|
Выберете local , если у вас одна реплика или replicated , если у вас больше одной реплики
|
|
version
|
Мажорная версия PostgreSQL
|
v18 по умолчанию; выберите ту, что нужна вашему приложению
|
Версии PostgreSQL - при создании сервиса выбирается мажорная версия PostgreSQL. В таблице ниже указано соответствие мажорной версии, которую вы видите в UI, и точной версии, которая будет развёрнута:
|
Версия в UI
|
Точная версия
|
|
v18 (по умолчанию)
|
18.1
|
|
v17
|
17.7
|
|
v16
|
16.11
|
|
v15
|
15.15
|
|
v14
|
14.20
|
|
v13
|
13.22
|
Точные версии обновляются вместе с платформой. Таблица соответствует текущему состоянию сервиса.
|
Пресеты ресурсов — это удобные «размеры», аналогичные тарифам в классических облачных сервисах.
|
Пресет
|
CPU
|
Память
|
|
nano
|
250m (¼ ядра)
|
128 МБ
|
|
micro
|
500m (½ ядра)
|
256 МБ
|
|
small
|
1 ядро
|
512 МБ
|
|
medium
|
1 ядро
|
1 ГБ
|
|
large
|
2 ядра
|
2 ГБ
|
|
xlarge
|
4 ядра
|
4 ГБ
|
|
2xlarge
|
8 ядер
|
8 ГБ
|
ВНЕШНИЙ ДОСТУП
Переключатель external — пожалуй, самый важный параметр, если вы хотите подключаться к базе снаружи платформы (например, с вашего компьютера или из стороннего сервиса).
Включите external, если планируете:
-
подключаться из приложения, которое работает вне DevSpace;
-
подключаться с локальной машины через psql, DBeaver, TablePlus и т.п.;
-
интегрировать базу с внешними инструментами (Debezium, BI-системы и др.).
Когда external включён, платформа создаёт LoadBalancer — публичный IP-адрес с открытым портом 5432. Именно этот IP вы будете использовать для подключения.
ПАРАМЕТРЫ POSTGRESQL-СЕРВЕРА
Секция postgresql → parameters позволяет передавать настройки прямо в postgresql.conf. Самый частый параметр — max_connections (по умолчанию 100). Если ваше приложение использует пул соединений или вы ожидаете большое число клиентов — увеличьте это значение заблаговременно.
КВОРУМ (СИНХРОННАЯ РЕПЛИКАЦИЯ)
Секция quorum управляет тем, нужно ли дожидаться подтверждения от реплик перед завершением транзакции записи.
-
minSyncReplicas — минимальное число реплик, которые должны подтвердить запись. При 0 репликация асинхронная (быстрее, но есть риск потери нескольких транзакций при сбое).
-
maxSyncReplicas — максимальное число синхронных реплик. Важно: это значение должно быть строго меньше общего числа реплик. Например, при replicas: 3 допустимо maxSyncReplicas: 2.
Для разработки оба параметра можно оставить 0. Для продакшена с требованием нулевой потери данных настройте, например, minSyncReplicas: 1, maxSyncReplicas: 2 при трёх репликах.
Шаг 4. Создайте пользователя
В секции users добавьте пользователя, от имени которого приложение будет подключаться к базе.
Нажмите на стрелочку-раскрывашку рядом с users, затем кнопку + (Add item). Появятся поля:
-
Имя пользователя — например, graphfarmer или appuser.
-
password — пароль. Задайте его здесь; позже он будет сохранён в зашифрованном хранилище секретов платформы.
-
replication — включайте только если этот пользователь нужен для CDC-инструментов (Debezium и подобных). В обычных случаях оставьте выключенным.Платформа управляет пользователями декларативно: вы описываете желаемое состояние, а оператор создаёт пользователей в базе автоматически. Это значит, что вручную создавать пользователей через CREATE USER не нужно.Шаг 5. Создайте базу данны
В секции databases нажмите + и задайте имя базы данных. Затем раскройте её настройки:
-
roles → admin — список пользователей с полными правами на эту базу. Добавьте сюда имя пользователя, созданного на предыдущем шаге.
-
roles → readonly — список пользователей с правами только на чтение (SELECT). Удобно для аналитиков, дашбордов или интеграций, которым не нужна запись.
-
extensions — расширения PostgreSQL, которые нужно активировать в этой базе (например, uuid-ossp, hstore, pg_trgm). Если не знаете, что нужно — оставьте пустым.
Связывание пользователя с базой: Просто добавить пользователя в секцию users недостаточно — он должен быть явно указан в ролях базы данных. Укажите имя пользователя в roles.admin или roles.readonly, чтобы он получил права.
Шаг 6. Нажмите Submit
После заполнения всех нужных полей нажмите кнопку Submit внизу формы.
Платформа начнёт создавать кластер. Процесс занимает, как правило, от одной до нескольких минут — нужно запустить контейнеры, настроить репликацию и создать пользователей. Статус инстанса сначала отобразится как Processing, затем сменится на Ready.
Шаг 7. Получите данные для подключения
Когда инстанс перейдёт в состояние Ready, вы увидите:
-
IP-адрес — это публичный адрес LoadBalancer (виден в интерфейсе сразу после создания, даже пока статус ещё Processing).
-
Секреты — пароли пользователей хранятся в защищённом хранилище. Откройте карточку инстанса, найдите секцию Secrets и скопируйте пароль нужного пользователя.
Сохраните для себя:
-
host — IP-адрес из интерфейса
-
port — 5432 (стандартный порт PostgreSQL)
-
user — имя пользователя, которое вы задали
-
password — из секретов
-
database — имя базы данныхШаг 8. Подключитесь к базе данныхС помощью psql (командная строка)psql — стандартная утилита командной строки для PostgreSQL. Установить её можно из пакетного менеджера вашей ОС:# Ubuntu / Debiansudo apt install postgresql-client# macOS (Homebrew)brew install libpq# Windows# Устанавливается вместе с PostgreSQL или через winget:winget install PostgreSQL.PostgreSQLКоманда подключения:psql -h <IP-адрес> -p 5432 -U <пользователь> -d <база_данных>Например:psql -h 128.0.67.225 -p 5432 -U graphfarmer -d graphfarmerПосле ввода команды вас попросят ввести пароль. Вставьте его из секретов интерфейса DevSpace.Если psql выдаёт предупреждение о несовпадении версий (psql: warning: server version mismatch) — это нормально и не влияет на работу. Оно означает лишь, что версия клиентской утилиты у вас отличается от версии сервера. В DevSpace можно выбрать версию PostgreSQL при создании инстанса.ПРОВЕРЬТЕ ПОДКЛЮЧЕНИЕПосле успешного входа вы окажетесь в интерактивной консоли psql. Выведите список баз данных для проверки:\lЕсли вы видите список — всё работает.СТРОКА ПОДКЛЮЧЕНИЯ (CONNECTION STRING)Большинство приложений, ORM и инструментов принимают строку подключения в стандартном формате:postgresql://<пользователь>:<пароль>@<IP-адрес>:5432/<база_данных>Например:postgresql://graphfarmer:mypassword@128.0.67.225:5432/graphfarmerГРАФИЧЕСКИЕ КЛИЕНТЫ
Если вы предпочитаете GUI — любой стандартный клиент подойдёт: DBeaver, TablePlus, pgAdmin, DataGrip. Укажите в них:
-
Host: IP-адрес из интерфейса DevSpace
-
Port: 5432
-
Database, User, Password — из шагов 4–7.ИТОГОВЫЙ ПРИМЕР МИНИМАЛЬНОЙ КОНФИГУРАЦИИНиже — YAML-конфигурация, соответствующая тому, что было заполнено в форме в этом руководстве. Вы можете вставить её на вкладке Manual, если хотите создать аналогичный инстанс без заполнения формы вручную.replicas: 2resourcesPreset: microsize: 10Giexternal: trueversion: v18postgresql:parameters:max_connections: 100users:graphfarmer:password: yourpassworddatabases:graphfarmer:roles:admin:- graphfarmerЧТО ДАЛЬШЕ
-
Бэкапы: Если вам нужны регулярные резервные копии, настройте секцию backup — платформа будет сохранять снапшоты на S3-совместимое хранилище по расписанию.
-
Продакшен-конфигурация: Увеличьте число реплик до 3, настройте кворумную репликацию и выберите пресет ресурсов large или выше.
-
Несколько баз и пользователей: Можно добавить любое количество пользователей и баз данных в одном инстансе — просто дополните секции users и databases.
-
Восстановление из бэкапа: Поддерживается Point-in-Time Recovery (PITR) — восстановление на любую точку во времени.