Skip to content

Resource nubes_postgres · Service ID: 90 · Service Name: PostgreSQL

Manual · Create params · Modify params · Output params · Operations · Example

MAN

Инструкция по развертыванию 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