Startseite » Blog DE » Spring Boot 3: Config-Server & Config-Client leicht gemacht

Spring Boot 3: Config-Server & Config-Client leicht gemacht

Was sind Config-Server und Config-Client?

Spring Boot 3 Config-Server

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!

Nach oben scrollen
WordPress Cookie Plugin von Real Cookie Banner