Was sind Config-Server und Config-Client?

Ein Config-Server ist ein zentraler Dienst, der Konfigurationsdateien für mehrere Anwendungen bereitstellt. Er erlaubt es, Konfigurationen zentral zu verwalten und Änderungen einfach auszurollen. Besonders in einer Microservices-Architektur ist dies enorm hilfreich, da alle Services auf die gleiche Konfigurationsquelle zugreifen können.
Ein Config-Client ist eine Anwendung (einer von mehreren Microservices), die sich ihre Konfigurationswerte vom Config-Server holt. Anstatt Konfigurationswerte in jeder Anwendung einzeln zu speichern, ruft der Client die benötigten Einstellungen dynamisch vom Server ab. Das reduziert Redundanz und sorgt für eine konsistente Konfiguration über alle Services hinweg.
Warum sind sie notwendig?
Zentralisierte Verwaltung von Konfigurationsdateien
Einfaches Ausrollen von Änderungen, ohne jeden Microservice manuell anzupassen
Möglichkeit, Umgebungsabhängigkeiten dynamisch zu handhaben (z.B. unterschiedliche Werte für Entwicklung, Test und Produktion)
Verbesserte Sicherheit durch die Speicherung sensibler Daten an einem sicheren Ort
1. Config-Server einrichten
Der Config-Server ist quasi die zentrale Schaltstelle für alle Konfigurationsdateien deiner Microservices. Lass uns starten!
Projekt erstellen
Zunächst brauchen wir ein neues Spring Boot 3-Projekt mit den folgenden Abhängigkeiten:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
Server-Konfiguration
Erstelle eine neue Klasse und annotiere sie mit @EnableConfigServer
:
@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
Konfiguration in bootstrap.yml / application.yml
Der Server braucht eine Quelle für die Konfigurationsdateien. Meistens wird ein Git-Repository genutzt. Hier ein Beispiel:
server:
port: 8888
spring:
cloud:
config:
server:
git:
uri: https://github.com/dein-user/dein-config-repo
Starte nun deinen Config-Server und du kannst die Konfigurationsdateien z. B. mit http://localhost:8888/dein-service/default
abrufen.
2. Config-Client einrichten
Jetzt brauchen wir einen Client, der sich die Konfiguration vom Server zieht.
Projekt erstellen
Hier brauchen wir die folgende Abhängigkeit:
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
Konfiguration in bootstrap.yml / application.yml
Der Client muss wissen, wo sich der Config-Server befindet:
spring:
application:
name: dein-service
cloud:
config:
uri: http://localhost:8888
Zugriff auf Konfigurationswerte
Jetzt kannst du Werte aus dem Config-Server mit @Value
oder @ConfigurationProperties
abrufen:
@RestController
public class ConfigTestController {
@Value("${custom.property:Nicht gefunden}")
private String customProperty;
@GetMapping("/config")
public String getConfigValue() {
return "Konfigurationswert: " + customProperty;
}
}
3. Änderungen an der Konfiguration übernehmen
Wenn du eine Konfiguration in deinem Git-Repo änderst, muss dein Client das mitbekommen. Das geht mit einem Refresh-Endpoint:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
Aktiviere das Refresh-Feature:
management:
endpoints:
web:
exposure:
include: refresh
Nun kannst du eine Konfigurationsänderung mit folgendem Befehl anstoßen:
curl -X POST http://localhost:8080/actuator/refresh
Fazit
Die zentrale Verwaltung von Konfigurationen mit Spring Boot 3 und dem Spring Cloud Config Server erleichtert die Wartung und Skalierung von Anwendungen erheblich. Doch Vorsicht: Schon kleine Fehler in der Konfiguration können Schwachstellen verursachen und damit ein Einfallstor für Angreifer sein. Fehlkonfigurationen können dazu führen, dass sensible Daten ungeschützt bleiben oder Systeme unerwartet angreifbar werden. Besonders in verteilten Systemen ist es essenziell, Konfigurationen sicher zu halten und regelmäßig zu überprüfen.
Falls du Unterstützung bei der Absicherung deiner Anwendungen benötigst, findest du auf dem cyberphinix Marktplatz erfahrene Sicherheitsexperten, die dir helfen, potenzielle Risiken zu erkennen und zu beheben. Schütze deine Systeme proaktiv, bevor Schwachstellen ausgenutzt werden!