Рецепт 18. pgvector в Kubernetes через CloudNativePG

Декларативная установка pgvector в PostgreSQL-кластер на Kubernetes через ресурс Database из CloudNativePG. Без ручного CREATE EXTENSION.
Опубликовано:

pgvector — одно из самых популярных расширений PostgreSQL последних лет, особенно в контексте AI/ML. Оно добавляет нативный тип данных «вектор» для similarity search и хранения эмбеддингов. В этом рецепте — деплой PostgreSQL с pgvector на Kubernetes полностью декларативно через CloudNativePG.

Предусловия

Шаг 1. Описать кластер PostgreSQL

pgvector.yaml:

YAML
apiVersion: postgresql.cnpg.io/v1
kind: Cluster
metadata:
  name: pgvector
spec:
  instances: 1

  storage:
    size: 1Gi
Нажмите, чтобы развернуть и увидеть больше

Применяем:

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

Шаг 2. Проверить статус

BASH
kubectl cnpg status pgvector
Нажмите, чтобы развернуть и увидеть больше

Шаг 3. Установить расширение pgvector

CloudNativePG поддерживает декларативное описание баз данных через ресурс Database, в котором можно указать список расширений. pgvector-db.yaml:

YAML
apiVersion: postgresql.cnpg.io/v1
kind: Database
metadata:
  name: pgvector-app
spec:
  name: app
  owner: app
  cluster:
    name: pgvector
  extensions:
  - name: vector
Нажмите, чтобы развернуть и увидеть больше

Применяем:

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

Смотрим:

BASH
kubectl get database pgvector-app
kubectl describe database pgvector-app
Нажмите, чтобы развернуть и увидеть больше

Контроллер сам прозрачно выполнит CREATE EXTENSION — а при изменении / удалении ресурса дёргает соответствующие ALTER EXTENSION / DROP EXTENSION.

Шаг 4. Проверить установку

BASH
kubectl cnpg psql pgvector -- app -c '\dx'
Нажмите, чтобы развернуть и увидеть больше

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

PLAINTEXT
                            List of installed extensions
  Name   | Version |   Schema   |                     Description
---------+---------+------------+------------------------------------------------------
 plpgsql | 1.0     | pg_catalog | PL/pgSQL procedural language
 vector  | 0.8.0   | public     | vector data type and ivfflat and hnsw access methods
(2 rows)
Нажмите, чтобы развернуть и увидеть больше

Итог

pgvector установлен и готов к использованию в БД app под управлением CloudNativePG. Это базовая основа для AI-нагрузок на Postgres в cloud-native окружении. Дальше — стандартный материал из официального “Getting Started” самого pgvector.

💡 Параллельно идёт работа над тем, чтобы расширения подгружались отдельными OCI-образами через Kubernetes ImageVolume, без необходимости пересобирать operand-образ Postgres. Подробнее — в статье «Иммутабельное будущее расширений».

Начать поиск

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

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