Files
infra-keycloak/k8s
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
..

Infra Keycloak (Kubernetes / CaC)

Déploiement de Keycloak 26.6.0 et PostgreSQL 16 en Configuration-as-Code (CaC) sous Kubernetes dans le namespace keycloak.

Structure du Répertoire

k8s/
├── kustomization.yaml             # Manifeste Kustomize principal
├── namespace.yaml                 # Namespace keycloak
├── secret.yaml                    # Secrets (Admin, DB, OIDC secrets)
├── secret.example.yaml            # Gabarit des secrets
├── postgresql/
│   ├── pvc.yaml                   # Stockage persistant PostgreSQL (2Gi)
│   ├── statefulset.yaml           # Base de données PostgreSQL 16
│   └── service.yaml               # Service PostgreSQL (port 5432)
├── keycloak/
│   ├── configmap-realm.yaml       # Realm classic-models (Configuration-as-Code)
│   ├── deployment.yaml            # Déploiement Keycloak 26.6.0 (--import-realm)
│   └── service.yaml               # Service Keycloak (ports 8080, 9000)
└── ingress/
    ├── tls.yaml                   # Secret TLS wildcard (*.sttlab.local)
    └── ingress.yaml               # Ingress NGINX (keycloak.sttlab.local)

Fonctionnalités Clés

  • Version Keycloak : quay.io/keycloak/keycloak:26.6.0 (Runtime Quarkus).
  • Import Automatique du Realm (CaC) : Le realm classic-models est chargé au démarrage via l'option --import-realm depuis le ConfigMap monté dans /opt/keycloak/data/import/.
  • Token Exchange RFC 8693 : Activé via KC_FEATURES: "token-exchange,admin-fine-grained-authz".
  • Clients Configurés :
    • librechat : Client OIDC pour le login et le flux OAuth MCP.
    • mcp-catalog : Audience du serveur MCP.
    • kong-token-exchange-broker : Échangeur de jetons RFC 8693 de Kong Gateway.
    • catalog-api & classic-models-api : Audiences des services backend.
  • Utilisateurs & Rôles :
    • admin-user (admin)
    • pm-user (product_manager)
    • ro-user (read_only)
    • customer-user (customer)
    • support-user (support)

Déploiement

kubectl apply -k k8s/