Оригинал: Maximizing Microservice Databases with Kubernetes, Postgres, and CloudNativePG — 28 февраля 2024.
PostgreSQL и Kubernetes
PostgreSQL — это open source СУБД, которая десятилетиями удерживает лидерство. В 2023 году получила награду «Database of the Year» и впервые обогнала MySQL по популярности в опросе Stack Overflow Developer Survey.
Исторически запуск БД в Kubernetes считался нестандартом. Ситуация изменилась после появления Local Persistent Volumes в Kubernetes 1.14 (март 2019) и развития паттерна Operator. Сообщество Data on Kubernetes активно продвигает stateful-нагрузки — включая БД — внутри Kubernetes как способ повысить продуктивность команд.
Главный тезис автора: «PostgreSQL отлично подходит для жизни в экосистеме Kubernetes — рядом с приложениями, а не отдельно от них».
Зачем нужен оператор
Просто завернуть PostgreSQL в контейнер недостаточно. Нормальный оператор должен:
- работать декларативно;
- использовать встроенную потоковую репликацию PostgreSQL;
- поддерживать непрерывный бэкап и Point-in-Time Recovery (PITR);
- интегрировать безопасность по принципу shift-left;
- автоматически делать rolling-update с минимальным простоем;
- давать наблюдаемость (метрики, логи, трейсы).
CloudNativePG
CloudNativePG развивается с 2019 года, как продукт запущен в феврале 2021, с мая 2022 распространяется как open source под Apache License 2.0.
Ключевые факты:
- Capability Level 5 Kubernetes-оператор (максимальный уровень зрелости).
- ~2900 GitHub stars за 21 месяц после открытия исходников.
- Самый популярный Postgres-оператор по опросу Timescale (2023).
- Кастомный ресурс
Cluster+ собственный instance manager. - Native HA без внешних инструментов вроде Patroni.
- Continuous backup, PITR, rolling update, fencing, hibernation, replica clusters.
Оператор полностью декларативен и тесно интегрируется с Kubernetes API: services, mTLS, affinity, persistent volumes — всё это «из коробки» через CRD.
Парадигма «микросервисная БД»
Идея: распространить принцип микросервисов на саму PostgreSQL. Каждое приложение управляет своим ресурсом Cluster, в кластере живёт одна прикладная БД, владелец БД — обычный application user (не суперпользователь). Транзакционный DDL гарантирует атомарность миграций. GitOps-пайплайны автоматизируют путь от dev до prod.
Это даёт:
- культуру Westrum «generative» (открытое сотрудничество разработчиков, DBA и платформенной команды);
- внедрение DevOps-практик (version control, CI/CD, deployment automation, database change management);
- меньше когнитивной нагрузки и силосов;
- тесную связку «фича-разработчика — данные пользователя» через автотесты, canary-релизы и абстракцию инфраструктуры.
Выводы
Связка Kubernetes + PostgreSQL + CloudNativePG — это не только техническое решение, но и удобная организационная модель. Она даёт свободу от vendor lock-in:
- on-prem, public, hybrid, multi-cloud;
- любой Kubernetes (managed или self-managed);
- self-managed PostgreSQL или с поддержкой вендора;
- любой Kubernetes-дистрибутив;
- разные архитектуры (общие ресурсы или dedicated).