CodeGym /Cursos /Módulo 5. Spring /Lección 223: Práctica: configuración de Spring Cloud Conf...

Lección 223: Práctica: configuración de Spring Cloud Config Server

Módulo 5. Spring
Nivel 23 , Lección 2
Disponible

En las lecciones anteriores nos familiarizamos con el concepto de gestión centralizada de configuraciones y con las posibilidades de Spring Cloud Config. Hoy no nos meteremos en teoría, sino que iremos directo a la práctica, porque, como se suele decir, teoría sin práctica es como código sin tests: parece que funciona, pero algo falla.

Hoy crearemos un Spring Cloud Config Server, lo conectaremos a un repositorio Git y comprobaremos cómo sirve las configuraciones. ¡Vamos!


Paso 1: Crear el proyecto Spring Cloud Config Server

1.1 Usamos Spring Initializr

Puedes crear un nuevo proyecto en la web de Spring Initializr o desde tu IDE favorito. Aquí están los parámetros principales que debes indicar:

  • Project: Maven
  • Language: Java
  • Spring Boot Version: 3.0.0 (o la versión estable más reciente)
  • Dependencies: añade Spring Cloud Config Server

O simplemente copia esta sección en tu pom.xml si creas el proyecto manualmente:


<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-config-server</artifactId>
</dependency>

Y no olvides añadir el BOM de Spring Cloud para que todo funcione correctamente:


<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2022.0.0</version> <!-- Cámbialo por la versión actual -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

¡Ahora tienes un proyecto base!

1.2 La anotación @EnableConfigServer

Para que nuestro proyecto actúe como Config Server, basta con una anotación mágica. Abre el archivo Application.java y añade:


import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;

@SpringBootApplication
@EnableConfigServer // Habilitamos la funcionalidad de Spring Cloud Config Server
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

Corto y potente.


Paso 2: Configurar el almacenamiento de configuraciones

2.1 Configuramos el repositorio Git

Las configuraciones del Config Server se guardarán en un repositorio Git. Para ello:

  1. Crea un repositorio vacío en GitHub, GitLab o en tu sistema local.
  2. Añade un archivo de configuración sencillo. Por ejemplo, crea application.properties o application.yml:

# application.properties en el repositorio
example.property=Hello from the Config Server!

Pista: el nombre del archivo debe seguir el formato {application-name}.properties o {application-name}.yml. Esto es importante para distribuir configuraciones entre microservicios.


2.2 Configuración del Config Server

Ahora hay que decirle al Config Server dónde buscar los archivos de configuración.

En el application.yml de nuestra aplicación Config Server añade el siguiente bloque:


server:
  port: 8888 # El Config Server funcionará en el puerto 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/tu-usuario/tu-repositorio # Indica la URL del repositorio
          default-label: main # Rama del repositorio (main, master u otra)

Si tu repositorio es privado, añade usuario y contraseña:


spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/tu-usuario/tu-repositorio
          username: tu-login
          password: tu-contraseña

2.3 Comprobamos el funcionamiento del Config Server

Arranca tu aplicación Config Server. Si todo está bien, ve a la URL:

http://localhost:8888/{application}/{profile}/{label}

Ejemplo:

http://localhost:8888/application/default

Esto devolverá los datos de configuración desde el repositorio Git. Verás algo como:


{
  "name": "application",
  "profiles": ["default"],
  "label": "main",
  "version": "123abc", 
  "propertySources": [
    {
      "name": "https://github.com/tu-usuario/tu-repositorio/application.properties",
      "source": {
        "example.property": "Hello from the Config Server!"
      }
    }
  ]
}

¡Felicidades! Tu Config Server funciona.


Paso 3: Conectar un cliente al Config Server

3.1 Configuración del cliente

Ahora crearemos una aplicación cliente que obtenga las configuraciones del Config Server.

  1. Crea un nuevo proyecto Spring Boot.
  2. Añade la dependencia Spring Cloud Config Client:

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
  1. Configura el archivo application.yml del cliente:

spring:
  application:
    name: my-client-application # El nombre debe coincidir con el archivo de configuración en el repositorio (my-client-application.properties)
  cloud:
    config:
      uri: http://localhost:8888 # URL de nuestro Config Server

3.2 Usamos las configuraciones obtenidas

Creamos un controlador REST para comprobar si hemos recibido la configuración. Por ejemplo:


import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ConfigClientController {

    @Value("${example.property}") // Obtenemos el valor desde el Config Server
    private String exampleProperty;

    @GetMapping("/config")
    public String getConfig() {
        return "Value of 'example.property' is: " + exampleProperty;
    }
}

Ahora ejecuta el cliente y abre:

http://localhost:8080/config

Verás:

Value of 'example.property' is: Hello from the Config Server!

Errores típicos y cómo solucionarlos

Si tu Config Server o el cliente no funcionan, aquí tienes algunas comprobaciones:

  1. Config Server devuelve 404, 401 o 500. Revisa:
    • La URL y la disponibilidad del repositorio.
    • Usuario/contraseña (si el repositorio es privado).
    • Si los archivos de configuración están en la rama indicada.
  2. El cliente no puede conectarse al Config Server.

    • Revisa spring.cloud.config.uri en la configuración del cliente.
    • Asegúrate de que el Config Server esté arrancado y accesible en el puerto indicado.
  3. El cliente no recibe la configuración.

    • Asegúrate de que el nombre del cliente (spring.application.name) coincida con el nombre del archivo en el repositorio.
    • Asegúrate de que el archivo esté disponible y sea válido.

Ahora tienes un Spring Cloud Config Server funcionando. Imagínate el poder que aporta para la gestión centralizada de microservicios. En la próxima lección aprenderemos a actualizar configuraciones "en caliente", para que tus aplicaciones puedan cambiar de estado tan rápido como los programadores cambian el código.

Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION