Перейти к содержанию

Kubernetes — инфраструктура

AppSec.AIGate опирается на пять инфраструктурных компонентов: PostgreSQL, Redis, MinIO, OPA и Keycloak (последний — только при включённой аутентификации).

AiGate не использует NATS

В отличие от GenAI, AiGate не требует NATS (или другой брокер сообщений). Обмен событиями безопасности построен на Redis Streams.

Инфраструктурные зависимости можно разворачивать в кластере (встроенные Helm-чарты продукта) или использовать внешние / управляемые сервисы провайдера. Продуктовые сервисы обращаются к ним по секретам.

Способы развёртывания

Рекомендуемый путь — установка через Wizard, который поднимает инфраструктуру в фазах Phase 1 (phase1:infra) и Phase 1.1 (phase1.1:bootstrap). Для каждого компонента поведение зависит от флага <component>.enabled:

  • enabled: true (встроенный компонент) — Wizard ставит соответствующий Helm-чарт в кластер; инициализацию (создание БД, бакетов, realm) выполняют Helm-хуки чарта автоматически.
  • enabled: false (внешний / управляемый сервис) — компонент не ставится; параметры подключения берутся из global.deps.<component>.*. Для первичной инициализации внешнего сервиса задайте bootstrap: true в global.deps.<component> — Wizard выполнит bootstrap-операции идемпотентно (IF NOT EXISTS / 409 Conflict = пропуск).

Ручная установка (без Wizard) — отдельные Helm-чарты из OCI-реестра:

helm install <release> oci://registry.appsec.global/appsecaigate-release/charts/<chart>

PostgreSQL

Версия: PostgreSQL 17. Хранит профили, провайдеры, пользователей, события безопасности, аудит, отчёты. Работает в режиме databases — отдельная база данных на группу сервисов.

Bootstrap (phase1.1:bootstrap) создаёт три базы:

База Сервисы-потребители
admin_api_db admin-api, admin-api-consumer, retention-worker
profiles_registry profiles-registry
vault_db tokenization-vault

Миграции схемы (Alembic) выполняются init-контейнерами самих сервисов при старте — отдельных Job для миграций нет. Полный DATABASE_URL сервис собирает сам из global.deps.postgres.* и пароля, подключаемого через secretKeyRef (см. Секреты).

Redis

Версия: Redis 7. Используется для трёх задач:

  • Redis Streams для событий безопасности (стрим security_events) — основной транспорт между api-gateway, admin-api-consumer и event-exporter;
  • кеш результатов profiles-registry;
  • счётчик лицензии.

Потребители: api-gateway, admin-api, event-exporter, profiles-registry. Пароль подключения — в секрете redis-auth (см. Секреты).

MinIO (S3)

S3-совместимое хранилище для OPA policy bundle. Bootstrap (phase1.1:bootstrap) создаёт бакет policies.

Поток политик: profiles-registry → MinIO → OPA. profiles-registry дополнительно сам гарантирует наличие бакета policies при старте (метод _ensure_bucket) — это подстраховка на случай внешнего S3, где bootstrap не выполнялся.

Потребители: profiles-registry, opa. Учётные данные — в секрете minio-auth (см. Секреты). Для внешнего MinIO за TLS задайте global.deps.minio.scheme: https.

OPA

Open Policy Agent (openpolicyagent/opa, порт 8181) — движок политик. OPA загружает policy bundle из MinIO и отвечает на запросы PDP. В Wizard OPA — это инфра-компонент (поднимается в Phase 1, phase1:infra), а не продуктовый сервис; разворачивается рядом с PDP.

Keycloak (аутентификация production)

Версия: Keycloak 25. Разворачивается только при auth.enabled: true (в пилоте на Compose аутентификацию можно отключить). В production вход защищён Keycloak + Envoy SecurityPolicy (OIDC).

Bootstrap (phase1.1:bootstrap) создаёт realm llm-firewall со следующей конфигурацией:

  • Роли: admin, operator, viewer;
  • Клиенты: public-клиент admin-api, OIDC-клиент envoy-gateway;
  • Маппинг claim'ов: groups-claim формируется из realm-ролей (mapper realm-role);
  • Bootstrap-пользователь: aigate-admin@appsec.global (его пароль — в секрете keycloak-auth, ключ KEYCLOAK_BOOTSTRAP_USER_PASSWORD).

Учётные данные Keycloak — в секрете keycloak-auth (см. Секреты).

Note

Перечень переменных окружения для подключения к инфраструктуре — Переменные окружения; соответствующие секреты — Секреты.