Оригинал: CloudNativePG Recipe 1 — Setting up your local playground in minutes — 3 марта 2024.
Цель — за несколько минут получить рабочую песочницу: локальный Kubernetes-кластер на ноутбуке + установленный CloudNativePG + первый PostgreSQL-кластер.
Создаём первый Kubernetes-кластер
Автор рекомендует kind (Kubernetes IN Docker): легковесный, поддерживает мультинодовые кластеры, отлично работает в любых окружениях, включая CI/CD.
Проверка установки:
kind versionСоздание кластера:
kind create cluster --name cnpgПо умолчанию создаётся single-node кластер. При необходимости можно настроить несколько нод для тестов распределённого Postgres.
Ставим CloudNativePG
CloudNativePG разворачивается манифестом. Для версии 1.29.0:
kubectl apply --server-side -f \
https://raw.githubusercontent.com/cloudnative-pg/cloudnative-pg/release-1.29/releases/cnpg-1.29.0.yamlЭто создаст Deployment cnpg-controller-manager в namespace cnpg-system. Свежие dev-снапшоты также собираются прямо из ветки trunk репозитория.
Создаём первый PostgreSQL-кластер
CloudNativePG идёт по принципу «convention over configuration». Минимальный пример из 3 инстансов:
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
name: cluster-example
spec:
instances: 3
storage:
size: 1GiПрименяем:
kubectl apply -f \
https://cloudnative-pg.io/docs/assets/files/cluster-example-0a961e59ba2e2313c983c3386be1d7e7.yamlОператор поднимет три инстанса PostgreSQL примерно за минуту.
Плагин cnpg для kubectl
В CloudNativePG нет отдельного CLI — вместо этого есть плагин cnpg для kubectl. Главная команда для просмотра состояния кластера:
kubectl cnpg status cluster-exampleПокажет статус репликации, инстансы, LSN и прочее.
Уборка
kind delete cluster --name cnpg