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

genai-gateway

Envoy Gateway — ingress-контроллер платформы. Управляет всеми входящими HTTP-маршрутами к продуктовым сервисам. При auth=true добавляет OIDC SecurityPolicy (аутентификация через Keycloak).

Назначение

Создаёт GatewayClass + Gateway + HTTPRoute для каждого продуктового сервиса. При auth.enabled: true добавляет Envoy SecurityPolicy с OIDC, JWT-валидацией и cookie-сессией. Браузер обращается к единой точке входа — IP Gateway.

Зависимости

Входящие

Источник Протокол
Браузер HTTPS/HTTP → HTTPRoute → UI
Внешние клиенты HTTPS/HTTP → HTTPRoute → API

Исходящие (routing к)

Все продуктовые сервисы: ui, ui-gateway, orchestrator, jailbreak-api, asr-api, cv-api, model-mgmt, scan-profile, results, auth-service, license-service, minio (console).

При auth=true также: keycloak (OIDC issuer).

Values

Параметр По умолчанию Обязателен Описание
global.domain да Базовый домен
global.publicScheme "http" нет https при TLS
global.auth.enabled false нет Включить OIDC SecurityPolicy
global.tls.secretName при https Wildcard TLS Secret для *.<domain>
global.instance "" нет Суффикс для мультиинсталляций
global.deps.keycloak.host keycloak нет Хост Keycloak
global.deps.keycloak.port 8080 нет Порт Keycloak
gateway.className "genai-class" да Имя GatewayClass (уникален в кластере)
gateway.name "genai" нет Имя Gateway-ресурса
gateway.managed true нет false = routes-only к существующему Gateway
gateway.listeners.https.enabled false нет Включить HTTPS listener
proxy.name "envoy" нет Имя EnvoyProxy
proxy.externalIPs [] нет Bare-metal: ["10.0.0.1"]; cloud: []
policies.security.enabled false нет Включить OIDC SecurityPolicy
policies.security.oidc.clientSecretRef.name "keycloak-auth" при auth=true Secret с ENVOY_GATEWAY_CLIENT_SECRET

Пример values.yaml

# values-genai-gateway.yaml
global:
  domain: "app.example.com"
  publicScheme: "http"
  auth:
    enabled: false
  deps:
    keycloak:
      host: keycloak
      port: 8080

gateway:
  className: "genai-class"
  name: "genai"
  managed: true

proxy:
  name: "envoy"
  externalIPs: []

policies:
  security:
    enabled: false
# values-genai-gateway.yaml
global:
  domain: "app.example.com"
  publicScheme: "https"
  auth:
    enabled: true
  tls:
    secretName: "genai-tls"
  deps:
    keycloak:
      host: keycloak
      port: 8080

gateway:
  className: "genai-class"
  name: "genai"
  managed: true
  listeners:
    https:
      enabled: true

proxy:
  name: "envoy"
  externalIPs: []

policies:
  security:
    enabled: true
    oidc:
      clientSecretRef:
        name: "keycloak-auth"

Установка

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

Требования Envoy Gateway

При auth.enabled: true требуется Envoy Gateway controller в кластере. Установить:

helm install envoy-gateway \
  oci://docker.io/envoyproxy/gateway-helm \
  --version v1.5.1 -n envoy-gateway-system --create-namespace

TLS Secret до установки

При publicScheme: https создайте Secret до helm install:

kubectl -n genai create secret tls genai-tls \
  --cert=wildcard.crt --key=wildcard.key

DNS записи (при auth=true)

После получения IP от LoadBalancer создайте DNS A-записи:

app.example.com         → <gateway-external-ip>
keycloak.example.com    → <gateway-external-ip>
minio.example.com       → <gateway-external-ip>