Доступно с ограничениями в редакциях EE

Обзор модуля

Модуль managed-postgres управляет кластерами PostgreSQL в Kubernetes-кластерах.
Он позволяет пользователям конфигурировать и масштабировать PostgreSQL-кластеры в соответствии с их потребностями, обеспечивая оптимальную производительность и безопасность.
Основные фичи:

  • Автоматическое развертывание: Разворачивает инстанс Postgres при помощи простой YAML конфигурации
  • High Availability: Поддерживает установку отказоустойчивого кластера Postgres или одиночного инстанса на выбор.
  • Управление конфигурацией: Отдельный ресурс Postgres Class для шаблонизации подхода к созданию кластеров с возможностью гибко валидировать пользовательские конфиги
  • Управление Пользователями и Базами: Декларативня модель создания пользователей и логических баз данных.
  • Статус: Информативный набор состояний для отслеживания развернутого Postgres.

Включение модуля

Для включения модуля managed-postgres примените следующий манифест:

apiVersion: deckhouse.io/v1alpha1
kind: ModuleConfig
metadata:
  name: managed-postgres
spec:
  enabled: true
  version: 1

После включения модуля автоматически будет создан кластерный ресурс PostgresClass с именем default.

Быстрый старт

Для примеров использования модуля смотрите:

Основные ресурсы

Модуль Managed Service Postgres предлагает инструменты для двух условных ролей Пользователь и Администратор.
Основными объектами модуля являются ресурсы Postgres, Postgres Class и контроллер состояния Postgres Operator.

Условная роль Администратор:

  • управляет cluster wide ресурсом Postgres Class и создает шаблоны валидаций, правила развертывания, конфигурацию для будущих сервисов, разворачиваемых в DKP.
  • Имеет доступ до системного namespace d8-managed-postgres, где развернут Postgres Operator, до его сервисных логов, определения состояния.

Условная роль Пользователь:

  • управляет ресурсом Postgres и конфигурирует сервис принимая во внимание созданный Администратором Postgres Class.

Ресурсы Администратора

PostgresClass

Ресурс PostgresClass позволяет ограничить создание невалидных конфигураций и предопределить некоторые значения.
Каждый ресурс Postgres обязательно должен быть связан с существующим ресурсом PostgresClass.
Перед развертыванием сервиса, вся конфигурация будет проверена о соответсвующий PostgresClass.
Подробное описание ресурса

Postgres Operator

При включении модуля, Postgres Operator контроллер разворачивается в системном namespace d8-managed-postgres
и согласовывает состояния Postgres и конечного сервиса во всех пользовательских namespace.

Ресурсы Пользователя

Postgres

Основной ресурс, который описывает состояние сервиса.
Должен быть создан внутри пользовательского namespace, и является точкой правды состояния для конкретного развернутого сервиса postgres.
Подробное описание ресурса