Commit Graph

14 Commits

Author SHA1 Message Date
Stéphane Tailland 3de6809b75 Propagate trace context across gateway hops
Every hop was starting its own trace: a single end-to-end transaction through
LibreChat, Kong and the backends appeared in Tempo as a dozen unrelated traces,
one per service. Verified on twelve consecutive traces, each containing exactly
one service.

Kong receives a W3C traceparent -- it is visible in the http-log records -- but
without a propagation block it neither continues the caller's trace nor passes
one downstream, so it minted a fresh trace id per request and the backends did
the same.

extract lists w3c first with b3 and jaeger as fallbacks, since the callers here
are a mix of OTel SDKs; inject is w3c only, which is what the Python and Java
agents downstream expect.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-26 08:12:07 +02:00
Stéphane Tailland 9a889127ca Send Kong traces to Tempo and gateway audit logs to Loki
Point OTEL_TRACES_ENDPOINT at Tempo instead of Jaeger. The variable is a
cluster-wide default, so this moves all five domains at once; Jaeger stays
deployed but no longer receives anything. Tempo derives RED span metrics
and the service graph from these traces on its own, and its trace ids
correlate with the audit logs below.

Add a Loki output to the audit collector. Kong's http-log payload is a
JSON object per request and Loki has no endpoint that accepts it, so
Fluent Bit is the translator between the two formats.

The `domain` label comes from $TAG, which the http input derives from the
request URI. That makes the path a domain posts to its identity here, so
one output block covers every domain and onboarding the next one is a
single AUDIT_LOG_ENDPOINT change on its side rather than another block.

The file output stays on Match * so the on-disk audit trail continues for
every domain, which keeps the switch reversible.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 07:25:36 +02:00
Stéphane Tailland 200f3174e7 fix(tracing): Add KONG_TRACING environment variables to gatewayconfiguration template 2026-08-23 15:49:15 +02:00
Stéphane Tailland a25edfdf13 Add audit-log-collector (Fluent Bit) in observability
Receives the http-log plugin's POSTs and dumps each record as a JSON
line to a PVC-backed file. Applied directly (kubectl), same as Jaeger
in this namespace — not Flux-managed yet.
2026-08-21 13:34:12 +02:00
Stéphane Tailland e4642b372c Label the Vault-sourced TLS secret konghq.com/secret=true
The Kong Gateway Operator only watches Secrets carrying this label,
same as the existing Konnect PAT ExternalSecret already does.
2026-08-21 09:49:41 +02:00
Stéphane Tailland 9376bc3cb3 Source per-domain Gateway TLS certs from Vault instead of cert-manager
cert-manager-issued Certificates never synced to Konnect as KongCertificate
objects through the Gateway API listener path, so dataplanes fell back to
Kong's default self-signed cert. Reuse the working kong-namespace pattern
(a static wildcard cert) via ExternalSecret instead.
2026-08-21 09:37:31 +02:00
Stéphane Tailland b4fd7064a3 Globol Policies template 2026-08-20 12:11:59 +02:00
Stéphane Tailland 2a35066dbf Globol Policies template 2026-08-20 11:34:32 +02:00
Stéphane Tailland 5e4cdc5c85 Globol Policies template 2026-08-20 11:28:14 +02:00
Stéphane Tailland 3879f775b8 Globol Policies template 2026-08-20 11:26:01 +02:00
Stéphane Tailland bf9fcaecd3 External Secrets Store 2026-08-19 18:53:35 +02:00
Stéphane Tailland 22348ce610 Template defaults 2026-08-19 17:34:06 +02:00
Stéphane Tailland 6afd9c4c5f First commit 2026-08-19 16:57:43 +02:00
Stéphane Tailland 8650f4ae7b Scaffold k8s-platform (Operator install only) 2026-08-18 14:59:45 +02:00