×

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 / Debian
    sudo 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: 2
    resourcesPreset: micro
    size: 10Gi
    external: true
    version: v18
     
    postgresql:
      parameters:
        max_connections: 100
     
    users:
      graphfarmer:
        password: yourpassword
     
    databases:
      graphfarmer:
        roles:
          admin:
            - graphfarmer
     
     
    ЧТО ДАЛЬШЕ
     
  • Бэкапы: Если вам нужны регулярные резервные копии, настройте секцию backup — платформа будет сохранять снапшоты на S3-совместимое хранилище по расписанию.
  • Продакшен-конфигурация: Увеличьте число реплик до 3, настройте кворумную репликацию и выберите пресет ресурсов large или выше.
  • Несколько баз и пользователей: Можно добавить любое количество пользователей и баз данных в одном инстансе — просто дополните секции users и databases.
  • Восстановление из бэкапа: Поддерживается Point-in-Time Recovery (PITR) — восстановление на любую точку во времени.