PostgreSQL 18 в Kubernetes уже сегодня — через CloudNativePG

PostgreSQL 18 вышел 25 сентября 2025: async I/O, B-tree skip scans, OAuth 2.0, extension_control_path. Минимальный образ — на 45% меньше, чем для 17. Деплой через CloudNativePG в три шага.
Опубликовано:

Оригинал: Run PostgreSQL 18 on Kubernetes Today with CloudNativePG — 26 сентября 2025.

PostgreSQL 18 вышел 25 сентября 2025 — с серьёзными улучшениями в производительности, аутентификации и безопасности. CloudNativePG и обновлённый postgres-containers уже позволяют запустить PG 18 в Kubernetes сегодня — на минимальном образе примерно вдвое меньше, чем у 17.

Что нового в PostgreSQL 18

Асинхронный I/O. Подсистема async I/O даёт прирост на I/O-bound операциях: sequential scans, VACUUM, bitmap heap scans.

B-tree skip scans. Multi-column индексы теперь работают без предиката на ведущий столбец — потенциально это сильное сокращение требований к storage для очень больших БД.

OAuth 2.0 для аутентификации. Современная интеграция с корпоративной identity-инфраструктурой.

extension_control_path — Bartolini выделяет это отдельно как «критический шаг для будущего PostgreSQL в cloud-native, иммутабельной инфраструктуре». Параметр позволяет указать доверенные директории с control-файлами расширений — то, что ровно ложится в декларативный подход CloudNativePG (см. «Иммутабельное будущее расширений»).

Прочее:

CloudNativePG и postgres-containers

Архитектурные изменения в postgres-containers сильно ужали минимальный образ:

ВерсияРазмер минимального образа
17~412 МБ
18~232 МБ

Что изменилось: пакет postgresql-18-jit (с поддержкой LLVM JIT) переехал из minimal-образа в standard. Minimal теперь действительно minimal — быстрее pull, меньше attack surface.

Поднимаем кластер PostgreSQL 18

Предусловие: Kubernetes-кластер (проще всего — kind, см. Рецепт 1).

1. Манифест angus.yaml

YAML
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: angus
spec:
  instances: 3
  imageName: ghcr.io/cloudnative-pg/postgresql:18-minimal-trixie
  storage:
    size: 1Gi
Нажмите, чтобы развернуть и увидеть больше

2. Применяем

BASH
kubectl apply -f angus.yaml
Нажмите, чтобы развернуть и увидеть больше

3. Проверяем статус и версию

BASH
kubectl cnpg status angus
kubectl cnpg psql angus -- -c 'SELECT version()'
Нажмите, чтобы развернуть и увидеть больше

Ожидаемый вывод:

PLAINTEXT
                                                             version
--------------------------------------------------------------------------------------------------------------------------
 PostgreSQL 18.0 (Debian 18.0-1.pgdg13+3) on aarch64-unknown-linux-gnu, compiled by gcc (Debian 14.2.0-19) 14.2.0, 64-bit
(1 row)
Нажмите, чтобы развернуть и увидеть больше

Выводы

PostgreSQL 18 доступен в Kubernetes сразу же после релиза — благодаря тесной кооперации сообщества CloudNativePG и upstream-проекта PostgreSQL. Это позволяет CNPG-команде заранее видеть и формировать критичные для cloud-native фичи — такие как extension_control_path, который завтра кардинально упростит работу с расширениями (см. «Иммутабельное будущее расширений» и Рецепт 18 про pgvector).

Начать поиск

Введите ключевые слова для поиска статей

↑↓
ESC
⌘K Горячая клавиша