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-реестра:
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
Перечень переменных окружения для подключения к инфраструктуре — Переменные окружения; соответствующие секреты — Секреты.