Skip to content

Инструкция из личного кабинета Это руководство по сервису из личного кабинета Nubes (ЛК). Текст приведён без изменений, «как есть».

Инструкция по развертыванию PostgreSQL через платформу


1. Общая информация

PostgreSQL — это надёжная объектно-реляционная СУБД с открытым исходным кодом, поддерживающая расширенный набор функций, транзакции и хранение сложных типов данных. Развёртывание полностью автоматизировано платформой на базе Zalando Postgres Operator с использованием Kubernetes.

Доступные операции

  • create — Создание кластера
  • delete — Удаление кластера
  • modify — Модификация кластера
  • suspend — Остановка кластера
  • resume — Запуск кластера
  • restart — Перезапуск кластера
  • recovery — Восстановление из резервной копии

  • create_user — Создание пользователя

  • delete_user — Удаление пользователя

  • create_database — Создание базы данных

  • delete_database — Удаление базы данных

2. Параметры развертывания кластера

Ниже перечислены параметры, которые необходимо указать при создании ресурса PostgreSQL:

  • Платформа для развертывания: Платформа для развертывания (среда, в которой будет развернут кластер). Пример: k8s-3.ext.nubes.ru.

  • Количество узлов в сети: Количество инстансов (реплик) в кластере PostgreSQL. Пример: 2 (master + slave).

  • Квота (megabyte) памяти пода: Квота памяти пода в мегабайтах. Пример: 2048

  • Квота (millicore) ядра пода: Квота CPU пода в миликорах (1000 mCPU = 1 vCPU). Пример: 1000

  • Размер (gigabyte) диска для базы данных: Размер диска для хранения данных в гигабайтах. Пример: 20

  • Выделяет внешний IP для доступа к master: Флаг, определяющий, нужно ли выделять внешний IP для доступа к master. Пример: true или false

  • Имя ipSpace для публикации внешнего IP master: Если включен предыдущий параметр, то поле необходимо заполнить. Пример: internet-no-antiddos-v1

  • Выделяет внешний IP для доступа к slave: Флаг для выделения внешнего IP для slave (реплики чтения). Работает, если slave присутствует в кластере.

  • Имя ipSpace для публикации внешнего IP slave: Если включен параметр для slave, то поле необходимо заполнить.

  • UUID экземпляра услуги S3: UUID экземпляра S3 для хранения резервных копий.

  • Версия PostgreSQL: Версия PostgreSQL для развертывания. Пример: 16

  • Расписание бэкапов (ext_BACKUP_SCHEDULE): Необязательный. Cron-выражение для времени запуска бэкапов. По умолчанию: 0 0 * * * (ежедневно в полночь).

  • Количество сохраняемых бэкапов (ext_BACKUP_NUM_TO_RETAIN): Необязательный. Количество сохраняемых бэкапов. По умолчанию: 7

  • PgPooler (master / slave): Флаги включения PgBouncer для подключений на запись и чтение. При включении создаётся отдельный под.

  • Разрешить подключение без SSL (allowNoSSL): По умолчанию подключение с sslmode=require. При true разрешается подключение без SSL.

  • Автоскейлинг PV (autoScale): Включает автоскейлинг тома. Требует настройки autoScalePercentage, autoScaleTechWindow, autoScaleQuotaGb.

  • Дополнительные параметры PostgreSQL (jsonParameters): JSON с переменными конфигурации PostgreSQL. Документация: https://www.postgresql.org/docs/current/runtime-config.html


3. Выходные параметры

После успешного развертывания ресурса PostgreSQL платформа возвращает ряд параметров.

externalConnect

Внешние эндпоинты для подключения к кластеру: - master — для операций записи (host: write.${namespace}, port: 5432) - slave — для операций чтения (host: read.${namespace}, port: 5432)

Пример ответа платформы:

{
  "slave": {
    "ip": "",
    "fqdn": "",
    "uuid": "",
    "isExternal": false
  },
  "master": {
    "ip": "<ip>",
    "fqdn": "write.<namespace>.<cluster-domain>",
    "uuid": "<uuid>",
    "isExternal": false
  }
}

Поля: ip — внешний IP; fqdn — полное имя хоста; uuid — идентификатор; isExternal — признак внешнего доступа.

internalConnect

Внутренние эндпоинты (FQDN) для подключения из других сервисов внутри той же сети Kubernetes.

Пример ответа платформы:

{
  "slave": "",
  "master": {
    "slave": "",
    "master": {
      "slave": "",
      "master": "postgresqlk8s-master.<namespace>.svc.cluster.local"
    }
  }
}

Для подключения используйте значение master.master.master (host для записи) или соответствующее значение slave (host для чтения).

Для подключения используется порт 5432.


4. Управление пользователями

create_user — Создание пользователя

  • Имя пользователя (username): Имя создаваемого пользователя. Используется для подключения к базе и настройки прав. Пример: myapp_user

  • Роль (role): Тип роли пользователя. Допустимые значения:

  • app_user — базовые права для DML-операций (SELECT, INSERT, UPDATE, DELETE)
  • ddl_user — расширенные права: createdb, createrole (управление базами и ролями)

Защищённые имена, которые нельзя использовать: admin, postgres, standby.

delete_user — Удаление пользователя

  • Имя пользователя (username): Имя удаляемого пользователя. Пример: myapp_user

Пользователя нельзя удалить, если он является владельцем базы данных. Сначала удалите или передайте владение базами данных другому пользователю.


5. Управление базами данных

create_database — Создание базы данных

  • Имя базы данных (dbName): Название создаваемой базы данных. Пример: myapp_db

  • Владелец базы данных (dbOwner): Имя пользователя-владельца базы. Должен существовать в кластере (создан через create_user). Пример: myapp_user

delete_database — Удаление базы данных

  • Имя базы данных (dbName): Название удаляемой базы данных. Пример: myapp_db