Compare commits

..

7 Commits

Author SHA1 Message Date
Stéphane Tailland 80a2a27ca9 Stop versioning the real secret.yaml
k8s/secret.yaml held the actual PostgreSQL password, Keycloak admin
password and OIDC client secrets, and .gitignore only covered .DS_Store
and *.tmp. Untrack it and ignore it, matching what infra-librechat already
does, and extend the ignore list to TLS key material.

kustomization.yaml still references the file, so the README now documents
creating it from secret.example.yaml — whose key set is identical — before
the first apply.

This only stops future leaks. The values remain in commit 6d3431c and on
the remote, so they must still be treated as compromised and rotated.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 07:30:20 +02:00
Stéphane Tailland 01d2082f3b Send traces to Tempo and expose metrics to Prometheus
Point the OTel Java agent at Tempo instead of Jaeger, so Keycloak's traces
land in the same backend as the rest of the stack and correlate with the
Loki logs of the same requests.

Annotate the pod for scraping. KC_METRICS_ENABLED already served /metrics
on the management port, so this only makes Prometheus discover it — on
port 9000, never on the application port.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 07:27:14 +02:00
Stéphane Tailland aac85b2f7a Update of classic models realm config 2026-08-23 17:22:57 +02:00
Stéphane Tailland cf456f10a1 fix(realm): Persist client secret and realm CaC 2026-08-23 15:54:16 +02:00
Stéphane Tailland d5242f68ca fix(secrets): Update kong-token-exchange-broker secret to match Vault/ExternalSecret 2026-08-23 08:05:23 +02:00
Stéphane Tailland b9287761bf feat(telemetry): Enable OpenTelemetry distributed tracing and JSON logging with MDC 2026-08-23 07:45:23 +02:00
Stéphane Tailland 08200a7df0 feat(k8s): Add Keycloak 26.6.0 with PostgreSQL 16 and classic-models realm CaC 2026-08-23 07:40:40 +02:00
4 changed files with 30 additions and 20 deletions
+10
View File
@@ -1,2 +1,12 @@
.DS_Store .DS_Store
*.tmp *.tmp
# Real secrets: only secret.example.yaml is versioned.
# k8s/kustomization.yaml still references secret.yaml, so a fresh clone must
# create it first — see README.
k8s/secret.yaml
# TLS material
*.crt
*.key
*.pem
+12
View File
@@ -42,6 +42,18 @@ k8s/
## Déploiement ## Déploiement
`k8s/secret.yaml` n'est pas versionné : il porte les mots de passe réels (base
PostgreSQL, admin Keycloak, secrets clients OIDC). Le créer une fois depuis le
gabarit, puis renseigner chaque `<CHANGE_ME>` :
```bash
cp k8s/secret.example.yaml k8s/secret.yaml
$EDITOR k8s/secret.yaml
```
`k8s/kustomization.yaml` le référence, donc le déploiement échoue tant qu'il
est absent.
```bash ```bash
kubectl apply -k k8s/ kubectl apply -k k8s/
``` ```
+8 -1
View File
@@ -19,6 +19,13 @@ spec:
app.kubernetes.io/name: keycloak app.kubernetes.io/name: keycloak
app.kubernetes.io/component: idp app.kubernetes.io/component: idp
app.kubernetes.io/part-of: keycloak app.kubernetes.io/part-of: keycloak
annotations:
# Discovered by the Prometheus in the observability namespace.
# Endpoint exposed by KC_METRICS_ENABLED=true, on the management
# port (9000), never on the application port.
prometheus.io/scrape: "true"
prometheus.io/port: "9000"
prometheus.io/path: "/metrics"
spec: spec:
initContainers: initContainers:
- name: download-otel-agent - name: download-otel-agent
@@ -102,7 +109,7 @@ spec:
- name: OTEL_SERVICE_NAME - name: OTEL_SERVICE_NAME
value: "keycloak" value: "keycloak"
- name: OTEL_EXPORTER_OTLP_ENDPOINT - name: OTEL_EXPORTER_OTLP_ENDPOINT
value: "http://jaeger.observability.svc.cluster.local:4318" value: "http://tempo.observability.svc.cluster.local:4318"
- name: OTEL_EXPORTER_OTLP_PROTOCOL - name: OTEL_EXPORTER_OTLP_PROTOCOL
value: "http/protobuf" value: "http/protobuf"
- name: OTEL_TRACES_EXPORTER - name: OTEL_TRACES_EXPORTER
-19
View File
@@ -1,19 +0,0 @@
apiVersion: v1
kind: Secret
metadata:
name: keycloak-secrets
namespace: keycloak
type: Opaque
stringData:
POSTGRES_USER: keycloak
POSTGRES_PASSWORD: keycloak-db-pass-2026
POSTGRES_DB: keycloak
KC_DB_USERNAME: keycloak
KC_DB_PASSWORD: keycloak-db-pass-2026
KC_BOOTSTRAP_ADMIN_USERNAME: admin
KC_BOOTSTRAP_ADMIN_PASSWORD: mermAid-giganTic-s3ea
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: mermAid-giganTic-s3ea
LIBRECHAT_OIDC_SECRET: librechat-oidc-secret-2026
CLIENT_SECRET: classic-models-client-secret-2026
USER_PASSWORD: Password123@