Stéphane Tailland 502012a5b2 Add metrics, traces and audit logs to the AI gateway
This gateway had none of the three: no prometheus, opentelemetry or http-log
plugin, so it produced only Kong's own node and shared-dict metrics and was
invisible in Tempo and Loki.

The five business domains inherit these from k8s-platform's
dataplane-globalpolicy-template, but that template also carries
openid-connect, rate-limiting and cors, and this gateway already defines its
own AI-specific versions of all three. Applying it here would duplicate them,
so the observability plugins are declared locally with the same configuration
as the shared template.

prometheus and opentelemetry bind control-plane-wide since they describe the
gateway itself; the audit log binds to the proxy service, matching how the
domains bind theirs.

The trace endpoint now comes from the shared dataplane-template-defaults
ConfigMap rather than being repeated here, so a change of trace backend does
not need a second edit. Its only key overlapping the inline block is
OIDC_ISSUER, and both carry the same value.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 07:48:11 +02:00
2026-08-20 17:28:05 +02:00

platform-llm

Platform-owned llm bounded context — Gateway infrastructure and the shared LLM proxy in one repo. Never split per functional domain, and never split between infra/routing here either: both are owned by the same (platform) team, unlike catalog's dataplane-catalog/catalog-api split (feature team vs. platform team, a real access boundary that doesn't exist for this domain).

What it does

Fronts OpenRouter (https://openrouter.ai) via one proxy route (/llm/v1/chat/completions) — the client's own model field selects among any OpenRouter-hosted model, not just a fixed set Kong picks.

Active policies:

  • ai-rate-limiting-advanced, token-based, both global (across all callers) and per-client (per authenticated consumer).
  • ai-prompt-guard (regex) and ai-semantic-prompt-guard (embedding-based, backed by Redis Stack) for prompt-injection/jailbreak safeguarding.
  • Two-tier auth: key-auth (static, shared key) for chatbot UIs that can't do OIDC on their outbound LLM connection (LibreChat and similar tools — structural limitation of that whole category, not fixable client-side), openid-connect for agents built in-house. Either succeeds; a request passing neither is rejected (request-termination on the fallback anonymous consumer).

Not yet active: PII redaction (ai-sanitizer) — needs a private Kong Cloudsmith registry image and an AI Gateway Enterprise entitlement, blocked pending that access. Everything else in this repo is unaffected.

Structure

  • dev/ai-gateway-kustomization.yaml + dev/ai-gateway-externalsecret.yaml — Gateway/DataPlane/Control Plane infra (same shared k8s-platform template every domain uses).
  • dev/proxy-kustomization.yaml + dev/proxy-externalsecret.yaml — the LLM proxy itself (./kong).
  • dev/gitrepository.yaml — this repo, self-referential.
S
Description
No description provided
Readme 78 KiB