Files
kong-platform-llm/dev/proxy-kustomization.yaml
T
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

48 lines
1.9 KiB
YAML

apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: platform-llm-dev
namespace: llm
spec:
interval: 10m
sourceRef:
kind: GitRepository
name: platform-llm-dev
path: ./kong
prune: true
dependsOn:
- name: llm-dev-ai-gateway
namespace: flux-system
postBuild:
substitute:
NAME: llm-dev
NAMESPACE: llm
CONTROL_PLANE_REF_NAME: llm-dev-jzvxt
OIDC_ISSUER: https://keycloak.sttlab.eu/realms/sttlab
AGENT_AUDIENCE: '["llm-proxy"]'
OPENROUTER_UPSTREAM_URL: https://openrouter.ai/api/v1/chat/completions
OPENROUTER_EMBEDDINGS_UPSTREAM_URL: https://openrouter.ai/api/v1/embeddings
VECTORDB_HOST: llm-dev-vectordb
VECTORDB_PORT: "6379"
RATE_LIMIT_GLOBAL_TOKENS_PER_MINUTE: "500000"
RATE_LIMIT_PER_CLIENT_TOKENS_PER_MINUTE: "50000"
# Looked up after consumer.yaml's llm-anonymous KongConsumer first
# reconciled — config.anonymous needs the real Consumer ID, not the
# username (Konnect stores it as a literal string otherwise, silently
# never resolving — verified live, request-termination never fired).
LLM_ANONYMOUS_CONSUMER_ID: "1efd79ee-fd2d-4f2d-beb8-e6e9b24185a1"
# The URI path is the collector's routing key: Fluent Bit tags the
# record `llm` and turns that into the Loki label domain=llm.
AUDIT_LOG_ENDPOINT: http://audit-log-collector.observability.svc.cluster.local/llm
substituteFrom:
# Listed first so the Secret below still wins on any key it defines.
# Brings OTEL_TRACES_ENDPOINT, the cluster-wide trace backend, so this
# gateway follows a backend change without a second edit here. The only
# key it shares with the inline block above is OIDC_ISSUER, and both
# carry the same value.
- kind: ConfigMap
name: dataplane-template-defaults
optional: false
- kind: Secret
name: platform-llm-dev-secrets