| .. | ||
| kafka/secrets | ||
| monitoring | ||
| nginx | ||
| postgres | ||
| redis | ||
| ssl | ||
| .env.dev | ||
| .env.prod | ||
| .env.staging | ||
| .env.template | ||
| .env.test | ||
| application.yml | ||
| prometheus-test.yml | ||
| README.md | ||
Meldestelle - Zentrale Konfigurationsverwaltung
Übersicht
Dieses Verzeichnis enthält die SINGLE SOURCE OF TRUTH für alle Umgebungsvariablen und Konfigurationsdateien im Meldestelle-Projekt. Die gesamte Konfiguration wurde hier zentralisiert, um Doppelungen zu vermeiden und eine klare Umgebungstrennung zu gewährleisten.
Struktur
config/
├── .env.template # Vorlage mit allen verfügbaren Variablen
├── .env.dev # Entwicklungsumgebung
├── .env.prod # Produktionsumgebung
├── .env.staging # Staging-Umgebung
├── .env.test # Testumgebung
├── application.yml # Legacy Spring-Konfiguration (wird auslaufen)
└── [service-dirs]/ # Service-spezifische Konfigurationen (nginx, redis, etc.)
Umgebungsdateien
.env.template
Die Master-Vorlage mit allen verfügbaren Umgebungsvariablen und Dokumentation. Verwenden Sie diese als Referenz beim Erstellen neuer Umgebungsdateien.
.env.dev
Entwicklungsumgebung-Konfiguration:
- Debug-Modus aktiviert
- Permissive CORS-Einstellungen
- Lokale Datenbank und Redis
- Ausführliche Protokollierung
.env.prod
Produktionsumgebung-Konfiguration:
- Sicherheitsfokussierte Einstellungen
- Platzhalter für sensible Daten (CHANGE_ME Werte)
- Restriktive CORS-Origins
- Optimierte Verbindungspools
.env.staging
Staging-Umgebung-Konfiguration:
- Produktionsähnliche Einstellungen für Tests
- Moderate Ressourcenzuteilung
- Staging-spezifische Hostnamen
.env.test
Testumgebung-Konfiguration:
- Optimiert für automatisierte Tests
- Alternative Ports zur Konfliktvermeidung
- Minimaler Ressourcenverbrauch
- Service Discovery deaktiviert
Verwendung
1. Für die Entwicklung
# Entwicklungsumgebung-Datei kopieren
cp config/.env.dev .env
# Oder einen Symlink erstellen
ln -sf config/.env.dev .env
2. Für die Produktion
# Produktions-Vorlage kopieren und anpassen
cp config/.env.prod .env.prod
# Alle CHANGE_ME Werte mit sicheren Zugangsdaten bearbeiten
vim .env.prod
# Produktions-Datei verwenden
ln -sf .env.prod .env
3. Für Tests
# Testumgebung verwenden
ln -sf config/.env.test .env
Struktur der Umgebungsvariablen
Die Konfiguration ist in 12 logische Abschnitte unterteilt:
- Anwendungskonfiguration - Grundlegende App-Einstellungen
- Port-Verwaltung - Alle Service-Ports an einem Ort
- Datenbank-Konfiguration - PostgreSQL-Einstellungen
- Redis-Konfiguration - Cache und Event Store
- Sicherheitskonfiguration - JWT, API-Schlüssel
- Keycloak-Konfiguration - Authentifizierungsserver
- Service Discovery - Consul-Einstellungen
- Messaging - Kafka-Konfiguration
- Überwachung - Grafana, Prometheus
- Protokollierungskonfiguration - Log-Level und Formate
- CORS und Rate Limiting - Web-Sicherheit
- Spring Profile und Gateway - Framework-Einstellungen
Sicherheitsrichtlinien
Entwicklung
- Standard-Passwörter für lokale Entwicklung verwenden
- Debug-Modus aktiviert lassen
- Permissive CORS-Einstellungen verwenden
Produktion
- NIEMALS Produktions-
.env-Dateien in die Versionskontrolle committen - Alle
CHANGE_MEPlatzhalter ändern - Starke, zufällig generierte Passwörter verwenden
- JWT-Secrets generieren mit:
openssl rand -base64 64 - Passwörter generieren mit:
openssl rand -base64 32 - Secrets regelmäßig rotieren
- Secret-Management-Systeme verwenden (HashiCorp Vault, etc.)
Migration von der alten Struktur
Die alten Konfigurationsdateien wurden konsolidiert:
Entfernte Dateien
/project-root/.env→config/.env.dev/project-root/.env.template→config/.env.template/project-root/.env.prod.example→config/.env.prodconfig/application*.properties- Entfernt und durch .env-Dateien ersetzt
Legacy-Dateien (werden auslaufen)
config/application.yml- Wird durch .env-Dateien ersetzt
Referenz der Umgebungsvariablen
Wichtige Variablen nach Umgebung
| Variable | Dev | Staging | Prod | Test |
|---|---|---|---|---|
DEBUG_MODE |
true | false | false | true |
LOGGING_LEVEL |
DEBUG | INFO | INFO | DEBUG |
CORS_ALLOWED_ORIGINS |
* | staging domains | prod domains | * |
DB_AUTO_MIGRATE |
true | true | false | true |
CONSUL_ENABLED |
true | true | true | false |
Port-Zuteilung
| Service | Port |
|---|---|
| Gateway | 8081 |
| Gateway Admin | 8080 |
| Ping Service | 8082 |
| Members Service | 8083 |
| Horses Service | 8084 |
| Events Service | 8085 |
| Masterdata Service | 8086 |
| Auth Service | 8087 |
Testumgebung: Alle Ports +1000 (z.B. Gateway: 9081)
Best Practices
- Immer die Vorlage verwenden als Ausgangspunkt für neue Umgebungen
- Benutzerdefinierte Variablen dokumentieren in Kommentaren
- Beschreibende Variablennamen verwenden nach den etablierten Mustern
- Verwandte Variablen gruppieren in logischen Abschnitten
- Konfiguration validieren vor der Bereitstellung
- Konfigurationsabweichungen überwachen zwischen Umgebungen
Fehlerbehebung
Häufige Probleme
- Port-Konflikte: Sicherstellen, dass die Testumgebung andere Ports verwendet
- Fehlende Variablen: Gegen
.env.templateprüfen - Zugriff verweigert: Dateiberechtigungen für
.env-Dateien überprüfen - Datenbankverbindung fehlgeschlagen: DB-Zugangsdaten und Hostname prüfen
Validierungsskript
# TODO: Validierungsskript erstellen
./scripts/validate-config.sh config/.env.prod
Zukünftige Verbesserungen
- Konfigurationsvalidierungsskripte
- Automatische Secret-Generierung
- Umgebungsspezifische docker-compose-Dateien
- Erkennung von Konfigurationsabweichungen
- Integration von Secret-Management