Pull to refresh
59.8
Amvera
Amvera — облако для хостинга IT-приложений

Операторы PostgreSQL для Kubernetes. Как мы выбирали идеальный вариант для организации системы DBaaS

Level of difficultyMedium
Reading time4 min
Views4.2K

Некоторое время назад у нас в облаке Amvera Cloud возникла задача организовать возможность создания managed баз данных. Сложность данной задачи в том, что нам надо развертывать и управлять тысячами баз данных PostgreSQL, которые обеспечивают репликацию, бэкапы, мониторинг и другие полезные пользователям функции. При этом в ядре нашей системы лежит Kubernetes, в котором запускаются приложения пользователей. И по ряду факторов нам требовалось запускать базы данных внутри кластера.

Чтобы не изобретать велосипед, мы решили рассмотреть известные операторы, позволяющие разворачивать базы данных PostgreSQL в Kubernetes и управлять ими.

В наш обзор вошли следующие решения

  • Crunchy Data PostgreSQL Operator

  • Stolon

  • Zalando Postgres Operator

  • KubeDB

  • StackGres

  • Сloudnative-pg

Рассмотрим их подробнее. 

  1. Crunchy Data PostgreSQL Operator

Лицензия - Apache 2.0

Количество звезд на GitHub - 3600

Год первого релиза - 2017

Основной функционал 

Поддерживает нативную установку в кластера kubernetes. Поддерживает Pod Anti-Affinity, а именно, правила, с помощью которых можно указать, на каких узлах/регионах должны работать конкретные реплики. Есть поддержка резервных кластеров, которые могут работать как внутри нескольких кластеров, так и между ними.

Поддержка полного, инкрементного и дифференцированного резервного копирования с возможностью автовосстановления данных, в том числе дельта-восстановления.

Мониторинг с использованием библиотеки pgMonitor и Grafana.

Поддержка TLS шифрования.

Управление обновлениями.

Инструмент клонирования данных.

Расширенная поддержка пула соединений.

Настройка топологии развертывания.

Поддержка функционала резервного копирования в S3-совместимые хранилища.

Особенности

Поддерживает декларативный подход и такие возможности, как управление базами данных с помощью Kustomize, OLM, ArgoCD и Helm. Совместим со всеми основными сборками и сервисами Kubernetes.

Ссылка на проект

2 .Stolon

Лицензия - Apache 2.0

Количество звезд на GitHub - 4400

Год первого релиза - 2015

Основной функционал 

Не является оператором Kubernetes, при этом есть интеграция с Kubernetes. Поддерживает репликацию, бэкапы и другие полезные функции.

Особенности

Пример архитектуры из официальной документации

Ссылка на проект 

  1. Zalando Postgres Operator

Лицензия - MIT

Количество звезд на GitHub - 3800

Год первого релиза - 2018

Основной функционал 

  • Последовательные обновления изменений кластера Postgres, в т.ч. быстрые обновления минорных версий

  • Изменение размера живого тома без перезапуска модуля (AWS EBS, PVC)

  • Пул соединений с базой данных с помощью PGBouncer

  • Поддержка быстрого обновления основной версии. Поддерживает глобальное обновление всех кластеров.

  • Восстановление и клонирование кластеров Postgres на AWS, GCS и Azure.

  • Дополнительно можно настроить логическое резервное копирование в корзину S3 или GCS.

  • Резервный кластер из архива S3 или GCS WAL

  • Настраивается для необлачных сред

  • Базовое управление учетными данными и пользователями на K8s упрощает развертывание приложений.

  • Поддержка пользовательских сертификатов TLS.

  • Пользовательский интерфейс для создания и редактирования манифестов кластера Postgres

  • Поддержка миграции AWS EBS gp2 на gp3, поддержка операций ввода-вывода и настройки пропускной способности.

  • Совместимость с OpenShift.

  • Кластер потоковой репликации через Patroni

  • Восстановление на определенный момент времени с помощью pg_basebackup / WAL-E через Spilo

Особенности

Архитектура решения из официальной документации

  1. KubeDB

Лицензия - Apache 2.0, но не на весь функционал

Количество звезд на GitHub - 530

Год первого релиза - 2017

Основной функционал 

Поддерживает не только PostgreSQL, но и MySQL, Elasticsearch, MySQL, MongoDB, Redis, Memcached.

Особенности

Особенностью является  dormantdatabases.kubedb.com ресурс. Он защищает от непреднамеренных/неправильных действий: все удаленные базы данных архивируются и копируются на этот ресурс, поэтому при необходимости их можно восстановить.

Многие функции, включая резервное копирование, объединение пулов соединений, снимки и неактивные базы данных, доступны только в  корпоративной версии. Это существенно снижает популярность продукта.

Ссылка на проект

  1. StackGres

Лицензия - AGPLv3

Количество звезд на GitHub - нет, так как используют GitLab

Год первого релиза - 2019

Основной функционал 

  • Создание кластеров в Kubernetes

  • Система сбора журналов

  • веб-панель, аналогичная Zalando

  • система мониторинга, аналогичная Crunchy Data

  • система агрегации резервных копий на базе MinIO

Особенности

Оператор не поддерживает сборки пользовательских образов или несколько дополнительных контейнеров для сервера базы данных. Модуль Postgres содержит пять контейнеров.

Из них мы можем отключить экспортер метрик, пул соединений и контейнер с помощью дополнительных инструментов.

Ссылка на проект

  1. Сloudnative-pg

Лицензия - Apache 2.0

Количество звезд на GitHub - 2700

Год первого релиза - 2022

Основной функционал 

Нативная поддержка Kubernetes c интеграцией с API-Kubernetes.

CloudNativePG предоставляет собственные облачные возможности, такие как самовосстановление, высокая доступность, чередующиеся обновления, масштабирование реплик только для чтения, Anti-Affinity сходство/анти-сходство/допуски для планирования, управление ресурсами и т. д.

Для безопасности используется TLS-соединения.

Решение поддерживает  физическую репликацию. CloudNativePG использует потоковую репликацию и файловую репликацию в качестве резервного метода. Вы можете настроить синхронную репликацию для получения реплик с нулевой потерей данных. 

Возможность восстановления до заданной временной метки.

Мониторинг с использованием Prometheus и Grafana.

Особенности

CloudNativePG полагается исключительно на API-сервер Kubernetes и диспетчер экземпляров для координации сложных операций. Они должны выполняться в кластере PostgreSQL, не требуя никакой помощи со стороны промежуточного инструмента управления, отвечающего за высокую доступность и аварийное переключение. Это выгодно отличает CloudNativePG от конкурентов.

Ссылка на проект

Таблица сравнения

Сравнение

Лицензия

Звезды на GitHub

Год первого релиза

Функционал

Crunchy Data

Apache 2.0

3600

2017

Широкий

Stolon

Apache 2.0

4400

2015

Узкий

Zalando Postgres Operator

MIT

380

2018

Широкий

KubeDB

Apache 2.0

*не на все

530

2017

Широкий, дополнительно поддерживает другие СУБД

StackGres

AGPLv3

-

2019

Средний

Сloudnative-pg

Apache 2.0

2700

2022

Широкий

Дополнительно вы можете ознакомиться и с другими сравнениями операторов для PostgreSQL - 1,2.

Итог: по совокупности факторов, для себя в Amvera Cloud мы выбрали для тестов Cloudnative-pg, Zalando Postgres Operator и Crunchy Data PostgreSQL Operator. И по результатам тестов стали использовать Cloudnative-pg для создания своего сервиса managed-СУБД с функционалом репликации, бэкапов и мониторинга.

Tags:
Hubs:
Total votes 7: ↑5 and ↓2+5
Comments20

Articles

Information

Website
amvera.ru
Registered
Employees
11–30 employees
Location
Россия
Representative
Кирилл Косолапов