Управляемый PostgreSQL с синхронной репликацией — без хлопот с эксплуатацией
Настройка PostgreSQL с синхронной репликацией «трудным путём» — это конфиги Patroni, кластеры etcd, pgBouncer, экспортеры мониторинга, скрипты резервного копирования, тестирование переключения при сбое — легко неделя работы ещё до того, как вы сохраните хотя бы одну строку. А потом всё это ещё нужно поддерживать. AWS RDS решает эту задачу, но привязывает вас к облачному счёту, который растёт быстрее ваших данных.
А что, если бы вы могли получить управляемый PostgreSQL на собственном оборудовании за две минуты?
Решение: управляемый PostgreSQL от Cozystack
Cozystack использует под капотом оператор CloudNativePG — один из самых зрелых доступных Kubernetes-нативных операторов Postgres. Вы получаете автоматическое переключение при сбое, потоковую репликацию и опциональную синхронную репликацию на основе кворума — всё это управляется платформой.
Через панель управления (быстрый способ)
- Откройте панель управления Cozystack по адресу
https://dashboard.<your-domain>. - Перейдите в Marketplace и найдите Postgres.

- Нажмите Deploy и заполните форму:
- Введите имя (например,
app-postgres). - Задайте число реплик
2(primary + standby с асинхронной репликацией) или3(для синхронной репликации с кворумом). - Выберите
resourcesPreset(nano, micro, small, medium, large). - Задайте размер хранилища (например,
10Gi). - В параметрах PostgreSQL при необходимости настройте
max_connections.
- Введите имя (например,

- Нажмите Deploy. За две минуты вы получаете конфигурацию primary + реплика с автоматическим переключением при сбое.

Через kubectl (способ GitOps)
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: postgres-myapp
namespace: tenant-team1
spec:
chart:
spec:
chart: postgres
reconcileStrategy: Revision # Согласование при изменении версии чарта
sourceRef:
kind: HelmRepository
name: cozystack-apps
namespace: cozy-public
version: 0.10.0
interval: 0s # Согласование только при изменении spec, а не периодически
values:
replicas: 3
size: 10Gi
resourcesPreset: small
databases:
production:
roles:
admin:
- appuser
users:
appuser:
password: "your-strong-password" # или удалите эту строку для автогенерации
external: false
kubectl apply -f postgres.yaml
Получение учётных данных для подключения
# Primary (чтение-запись)
kubectl get svc -n tenant-team1 | grep postgres-myapp-rw
# Реплика (только чтение)
kubectl get svc -n tenant-team1 | grep postgres-myapp-ro
# Пароль
kubectl get secret -n tenant-team1 postgres-myapp-app \
-o jsonpath='{.data.password}' | base64 --decode
Эти имена сервисов разрешаются из любого вложенного кластера Kubernetes в том же арендаторе — без внешнего DNS или VPN.
Резервные копии
Включите S3-совместимое хранилище резервных копий, задав backup.enabled: true в values. Восстановление — это изменение одной строки конфигурации, указывающей имя исходного кластера и опциональную метку времени в формате RFC 3339.
Узнать больше
- Документация по управляемому PostgreSQL
- Руководство по развёртыванию приложений
- Оператор CloudNativePG
Присоединяйтесь к сообществу
- GitHub
- Telegram группа
- Slack группа (получите приглашение на https://slack.kubernetes.io)
- Календарь встреч сообщества