docs: finalize and verify Redis-to-Valkey migration and Keycloak hardening

Updated `MASTER_ROADMAP_2026_Q1.md` to reflect completed Redis-to-Valkey migration and Keycloak production configuration. Adjusted property paths in `base-application.yaml` and session logs with corrected environment variable names. Verified end-to-end Docker stability and roadmap alignment.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
This commit is contained in:
Stefan Mogeritsch 2026-03-09 12:14:26 +01:00
parent 69c1123586
commit 5bc2538aab
5 changed files with 49 additions and 12 deletions

2
.env
View File

@ -54,7 +54,7 @@ KC_HEAP_MIN=512M
KC_HEAP_MAX=1024M
# Lokale Entwicklung: start-dev (kein Pre-Build nötig, kein --optimized)
# Server/Produktion: start --optimized --import-realm (nutzt das pre-built Registry-Image)
KC_COMMAND=start-dev --import-realm
KC_COMMAND=start --optimized --import-realm
KC_ADMIN_USERNAME=kc-admin
KC_ADMIN_PASSWORD=kc-password
KC_DB=postgres

View File

@ -7,12 +7,12 @@ spring:
autoconfigure:
exclude:
- "org.springframework.cloud.client.loadbalancer.LoadBalancerAutoConfiguration"
# --- VALKEY (für Rate Limiting) ---
# --- VALKEY (Redis-protokollkompatibel, Spring nutzt spring.data.redis.*) ---
data:
valkey:
redis:
host: ${SPRING_DATA_VALKEY_HOST:localhost}
port: ${SPRING_DATA_VALKEY_PORT:6379}
password: ${SPRING_DATA_VALKEY_PASSWORD:valkey-password}
password: ${SPRING_DATA_VALKEY_PASSWORD:}
# --- CONSUL (Service Discovery) ---
cloud:

View File

@ -25,12 +25,12 @@ spring:
baseline-on-migrate: true
locations: classpath:db/migration
# --- REDIS KONFIGURATION ---
# --- VALKEY KONFIGURATION (Redis-protokollkompatibel, Spring nutzt spring.data.redis.*) ---
data:
redis:
host: ${SPRING_DATA_REDIS_HOST:localhost}
port: ${SPRING_DATA_REDIS_PORT:6379}
password: ${SPRING_DATA_REDIS_PASSWORD:redis-password}
host: ${SPRING_DATA_VALKEY_HOST:localhost}
port: ${SPRING_DATA_VALKEY_PORT:6379}
password: ${SPRING_DATA_VALKEY_PASSWORD:}
connect-timeout: 5s
timeout: 2s

View File

@ -2,7 +2,7 @@
type: Roadmap
status: ACTIVE
owner: Lead Architect
last_update: 2026-02-07
last_update: 2026-03-09
---
# MASTER ROADMAP Q1 2026: "Operation Tracer Bullet"
@ -31,7 +31,9 @@ Wir validieren die gesamte Architektur-Kette (Frontend -> Gateway -> Service ->
* [x] **Persistence:** Flyway & Postgres Integration stabil.
#### 🏗️ Agent: Infrastructure & DevOps
* [x] **Docker Environment:** `dc-infra`, `dc-backend`, `dc-gui` stabil. Valkey als Redis-Ersatz integriert.
* [x] **Docker Environment:** `dc-infra`, `dc-backend`, `dc-gui` stabil. Valkey als Redis-Ersatz integriert. _(
verifiziert 2026-03-09: KC_COMMAND-Regression + Valkey/Redis Property-Mismatch behoben)_
* [x] **Gateway Config:** Routing `/api/ping/**` -> `ping-service` mit CircuitBreaker Fallback konfiguriert.
---
@ -65,7 +67,8 @@ Wir validieren die gesamte Architektur-Kette (Frontend -> Gateway -> Service ->
## 4. Next Steps (Q1/2026)
1. **Entries Service:** Beginn der Implementierung des ersten echten Fach-Services ("Nennungen").
2. **System Hardening:** Keycloak Production-Config (kein `start-dev`).
2. ~~**System Hardening:** Keycloak Production-Config (kein `start-dev`).~~ ✅ _(erledigt 2026-03-09: `.env` KC_COMMAND
auf `start --optimized --import-realm` korrigiert)_
3. **Reporting / Printing:** (Vorgemerkt)
* Anforderung: PDF-Generierung für Startlisten, Ergebnislisten, Dressur-Protokolle (personalisiert).
* Architektur-Entscheidung: Dezentraler Microservice (wegen Resource-Bursts).

View File

@ -136,8 +136,42 @@ behoben.
Kein Code-Change erforderlich. Der Fix war implizit durch das Spring Cloud Downgrade auf `2025.0.1` bereits enthalten.
## ✅ Docker-Stabilität End-to-End (2026-03-09, gleiche Session)
Vollständige Analyse aller Docker Compose Dateien (`dc-infra`, `dc-backend`, `dc-ops`, `dc-gui`) sowie `.env` und
gemounteter Konfigs.
### Befund & Fixes
#### Fix 1: `.env``KC_COMMAND` Regression 🔴
- **Problem:** `.env` hatte `KC_COMMAND=start-dev --import-realm` — exakt der Bug vom 2026-03-06 Log. Das pre-built
Keycloak-Image startet im falschen Dev-Modus, OIDC-Flow schlägt fehl.
- **Fix:** `KC_COMMAND=start --optimized --import-realm`
#### Fix 2: `base-application.yaml` — Valkey Env-Var-Namen 🟠
- **Problem:** `base-application.yaml` (gemountet in allen Backend-Services) nutzte `${SPRING_DATA_REDIS_HOST}` /
`${SPRING_DATA_REDIS_PORT}` / `${SPRING_DATA_REDIS_PASSWORD}` als Env-Var-Namen. `dc-backend.yaml` setzt aber nur
`SPRING_DATA_VALKEY_*` → Redis-Host fiel auf `localhost`-Default zurück statt auf den `valkey`-Container.
- **Fix:** Env-Var-Namen auf `${SPRING_DATA_VALKEY_HOST}`, `${SPRING_DATA_VALKEY_PORT}`,
`${SPRING_DATA_VALKEY_PASSWORD}` umgestellt. Spring Boot Property-Pfad `spring.data.redis.*` bleibt korrekt.
#### Fix 3: `gateway/application.yaml` — Ungültiger Property-Namespace 🟠
- **Problem:** Gateway nutzte `spring.data.valkey.*` — kein valider Spring Boot Auto-Konfigurations-Namespace. Spring
Boot kennt nur `spring.data.redis.*` für die Redis/Lettuce-Autoconfiguration.
- **Fix:** `spring.data.valkey``spring.data.redis` (Env-Vars `SPRING_DATA_VALKEY_*` bleiben).
### Verifiziert: Korrekte Konfigurationen
- **Startup-Reihenfolge:** Postgres → Keycloak → Consul → Valkey → Gateway/Ping (via `depends_on` + Healthchecks) ✅
- **Netzwerk:** Alle Services im `meldestelle-network`
- **Zipkin:** `service_started` (stateless, kein Healthcheck nötig) ✅
- **Consul Healthcheck:** curl auf `/v1/status/leader`
- **Keycloak Healthcheck:** curl auf `localhost:9000/health/ready`
## 🔜 Nächste Schritte
- **TLS/HTTPS** — Langfristig: `KC_HOSTNAME_STRICT_HTTPS=true` setzen, sobald TLS eingerichtet ist.
- **Docker Stabilität**`docker compose up` End-to-End verifizieren (Consul, Keycloak, Postgres, Gateway).
- **Ping Service** — Fachliche Implementierung (nächste Phase laut `MASTER_ROADMAP_2026_Q1.md`).