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

UI Gateway

BFF (Backend for Frontend) — API Gateway для Angular UI. Объединяет все downstream API в один endpoint, управляет WebSocket-соединениями, обрабатывает presigned URL для MinIO. Порт: 3000.

Назначение

Единая точка входа для браузера. Проксирует запросы к нужным микросервисам, управляет аутентификацией сессий. При auth=false включает DEV_MODE (без логина). При auth=true валидирует JWT-токен Keycloak.

Зависимости

Входящие

Источник Протокол Назначение
Браузер HTTP/WebSocket UI API
genai-gateway HTTPRoute → ui-gateway:3000

Исходящие

Сервис K8s Service Порт
model-mgmt model-mgmt 8000
scan-profile scan-profile 8000
orchestrator orchestrator 8000
jailbreak jailbreak-api 8000
asr asr-api 8000
cv cv-api 8000
results results 8002
auth-service auth-service 8000
license-service license-service 8000
minio (внутренний) minio 9000

Values

Параметр По умолчанию Обязателен Описание
image.name да registry.appsec.global/appsecgenai-release/ui-gateway
image.tag да Версия образа
imagePullSecrets[0].name да imagePullSecret
env.AUTH_ENABLED "true" нет "false" в dev/smoke
env.DEV_MODE при auth=false "true" отключает проверку токенов
env.CORS_ORIGIN авто из global нет "*" в dev; https://app.example.com в prod
env.S3_PUBLIC_URL авто из global.minioPublicUrl да Публичный URL MinIO для presigned URL
env.KEYCLOAK_URL авто из global при auth=true URL Keycloak realm
env.KEYCLOAK_REALM "appsec-genai" нет
env.OTEL_SDK_DISABLED нет "true" если нет otel-collector
global.domain да Домен (используется для CORS и KEYCLOAK_URL)
global.publicScheme "https" нет
global.minioPublicUrl да Публичный URL MinIO (для браузера)
global.url.modelManagementUrl {svc: model-mgmt, port: 8000} нет
global.url.scanOrchestratorUrl {svc: orchestrator, port: 8000} нет
global.url.scanProfileUrl {svc: scan-profile, port: 8000} нет
global.url.cvAdversarialUrl {svc: cv-api, port: 8000} нет
global.url.asrAdversarialUrl {svc: asr-api, port: 8000} нет
global.url.resultsServiceUrl {svc: results, port: 8002} нет Порт 8002
global.url.jailbreakServiceUrl {svc: jailbreak-api, port: 8000} нет
global.url.authServiceUrl {svc: auth-service, port: 8000} нет
global.url.licenseServiceUrl {svc: license-service, port: 8000} нет
global.url.s3InternalUrl {svc: minio, port: 9000, scheme: http} нет Внутренний URL MinIO

Пример values.yaml

# values-ui-gateway.yaml
image:
  name: registry.appsec.global/appsecgenai-release/ui-gateway
  tag: "<VERSION>"

imagePullSecrets:
  - name: harbor-cr

env:
  NODE_ENV: "production"
  AUTH_ENABLED: "false"
  DEV_MODE: "true"
  CORS_ORIGIN: "*"
  OTEL_SDK_DISABLED: "true"
  S3_PUBLIC_URL: "http://minio.app.example.com"

global:
  domain: "app.example.com"
  publicScheme: "http"
  minioPublicUrl: "http://minio.app.example.com"
  url:
    modelManagementUrl:  { svc: model-mgmt,      port: 8000 }
    scanOrchestratorUrl: { svc: orchestrator,     port: 8000 }
    scanProfileUrl:      { svc: scan-profile,     port: 8000 }
    cvAdversarialUrl:    { svc: cv-api,           port: 8000 }
    asrAdversarialUrl:   { svc: asr-api,          port: 8000 }
    resultsServiceUrl:   { svc: results,          port: 8002 }
    jailbreakServiceUrl: { svc: jailbreak-api,    port: 8000 }
    authServiceUrl:      { svc: auth-service,     port: 8000 }
    licenseServiceUrl:   { svc: license-service,  port: 8000 }
    s3InternalUrl:       { svc: minio,            port: 9000, scheme: http }
# values-ui-gateway.yaml
image:
  name: registry.appsec.global/appsecgenai-release/ui-gateway
  tag: "<VERSION>"

imagePullSecrets:
  - name: harbor-cr

env:
  NODE_ENV: "production"
  AUTH_ENABLED: "true"
  OTEL_SDK_DISABLED: "true"
  S3_PUBLIC_URL: "https://minio.app.example.com"
  KEYCLOAK_URL: "https://keycloak.app.example.com/realms/appsec-genai"

global:
  domain: "app.example.com"
  publicScheme: "https"
  minioPublicUrl: "https://minio.app.example.com"
  url:
    modelManagementUrl:  { svc: model-mgmt,      port: 8000 }
    scanOrchestratorUrl: { svc: orchestrator,     port: 8000 }
    scanProfileUrl:      { svc: scan-profile,     port: 8000 }
    cvAdversarialUrl:    { svc: cv-api,           port: 8000 }
    asrAdversarialUrl:   { svc: asr-api,          port: 8000 }
    resultsServiceUrl:   { svc: results,          port: 8002 }
    jailbreakServiceUrl: { svc: jailbreak-api,    port: 8000 }
    authServiceUrl:      { svc: auth-service,     port: 8000 }
    licenseServiceUrl:   { svc: license-service,  port: 8000 }
    s3InternalUrl:       { svc: minio,            port: 9000, scheme: http }

Установка

helm upgrade --install ui-gateway \
  oci://registry.appsec.global/appsecgenai-release/charts/ui-gateway \
  --version <VERSION> -n genai \
  --wait \
  -f values-ui-gateway.yaml