Архитектура
Документ-источник: Официальная документация Zalando Postgres Operator

PostgreSQL Operator управляет кластерами PostgreSQL с использованием шаблона Kubernetes Operator и в основном состоит из следующих ключевых компонентов:
Содержание
Основные компонентыПоток данныхАрхитектура RBACРазрешения OperatorRuntime RBACРоли для пользователейАгрегация ролейРежимы развертыванияОсновные компоненты
-
Operator Controller
- Отслеживает изменения в PostgreSQL Custom Resource Definitions (CRD)
- Отвечает за создание кластера, масштабирование, обновления конфигурации и другие операции
- Управляет жизненным циклом кластера
-
Patroni
- Обеспечивает гарантии высокой доступности
- Обрабатывает переключение primary/standby и failover
- Управляет топологией кластера и состоянием участников
-
Spilo
- Предоставляет контейнерный образ PostgreSQL
- Интегрирует Patroni и PostgreSQL
- Отвечает за конфигурацию и запуск инициализации
-
Компонент мониторинга
- Интегрирует Prometheus для сбора метрик
- Предоставляет дашборды Grafana
- Поддерживает настройку правил оповещений
Поток данных
- Пользователи создают PostgreSQL Custom Resource через Kubernetes API
- Operator Controller отслеживает изменения ресурсов и создает связанные Kubernetes ресурсы
- Patroni отвечает за инициализацию кластера и управление высокой доступностью
- Spilo запускает экземпляр PostgreSQL и применяет конфигурацию
- Компонент мониторинга собирает метрики и отображает их
Архитектура RBAC
PostgreSQL Operator реализует модель RBAC с принципом наименьших привилегий и разделением обязанностей для соответствия требованиям корпоративной безопасности.
Разрешения Operator
Оператор следует принципу наименьших привилегий. Он имеет только минимальные разрешения, необходимые для управления кластерами PostgreSQL:
У оператора нет разрешений на управление RBAC на уровне кластера (ClusterRole, ClusterRoleBinding).
Runtime RBAC
Когда в namespace создается PostgreSQL CR, оператор автоматически создает:
Это стандартный шаблон Kubernetes Operator, в котором разрешениями ClusterRole управляет OLM/admin.
Роли для пользователей
Оператор предоставляет шаблоны ролей для разделения обязанностей:
Агрегация ролей
Пользовательские роли агрегируются в platform roles:
- admin: агрегирует роли admin-base + backup + restore
- edit/view: агрегируются в
rbac.cpaas.io/aggregate-to-namespace-developer - Все роли: агрегируются в
rbac.cpaas.io/aggregate-to-scope-business-ns
Режимы развертывания
PostgreSQL Operator поддерживает следующие режимы развертывания:
- Single Cluster Mode: работает в одном кластере Kubernetes
- Multi-Cluster Mode: управляет экземплярами PostgreSQL в нескольких кластерах Kubernetes
- High Availability Mode: обеспечивает автоматический failover через Patroni