JavaRush/Курси/Модуль 5. Spring/Лекція 223: Практика: налаштування Spring Cloud Config Se...

Лекція 223: Практика: налаштування Spring Cloud Config Server

Відкрита

У попередніх лекціях ми познайомилися з концепцією централізованого управління конфігураціями та можливостями Spring Cloud Config. Сьогодні ми не будемо заглиблюватися в теорію, а одразу перейдемо до практики, бо, як кажуть, теорія без практики — це як код без тестів: ніби працює, але щось не так.

Сьогодні ми створимо Spring Cloud Config Server, підключимо його до репозиторію Git і перевіримо, як він роздає конфігурації. Поїхали!


Крок 1: Створення проєкту Spring Cloud Config Server

1.1 Використовуємо Spring Initializr

Створити новий проєкт можна на сайті Spring Initializr або через ваш улюблений IDE. Ось основні параметри, які потрібно вказати:

  • Project: Maven
  • Language: Java
  • Spring Boot Version: 3.0.0 (або остання стабільна версія)
  • Dependencies: додаємо Spring Cloud Config Server

Або ж просто скопіюйте цей блок у ваш pom.xml, якщо створюєте проєкт вручну:

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

І не забудьте додати BOM для Spring Cloud, щоб усе працювало коректно:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-dependencies</artifactId>
            <version>2022.0.0</version> <!-- Замініть на актуальну версію -->
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

Тепер у вас є базовий проєкт!

1.2 Анотація @EnableConfigServer

Щоб наш проєкт міг стати Config Server, достатньо однієї магічної анотації. Відкриваємо файл Application.java і додаємо:

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

@SpringBootApplication
@EnableConfigServer // Увімкнути функціональність Spring Cloud Config Server
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

Коротко і потужно.


Крок 2: Налаштування сховища конфігурацій

2.1 Налаштовуємо Git-репозиторій

Налаштування Config Server будемо зберігати в репозиторії Git. Для цього:

  1. Створіть порожній репозиторій на GitHub, GitLab або в локальній системі.
  2. Додайте простий конфігураційний файл. Наприклад, створіть application.properties або application.yml:
# application.properties у репозиторії
example.property=Hello from the Config Server!

Підказка: ім'я файлу має відповідати формату {application-name}.properties або {application-name}.yml. Це важливо для розподілу конфігурацій між мікросервісами.


2.2 Конфігурація Config Server

Тепер потрібно вказати Config Server, де шукати конфігураційні файли.

У application.yml нашого Config Server додайте наступний блок:

server:
  port: 8888 # Config Server працюватиме на порту 8888

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/ваш-користувач/ваш-репозиторій # Вкажіть URL репозиторію
          default-label: main # Гілка репозиторію (main, master або інша)

Якщо ваш репозиторій приватний, додайте логін і пароль:

spring:
  cloud:
    config:
      server:
        git:
          uri: https://github.com/ваш-користувач/ваш-репозиторій
          username: ваш-логін
          password: ваш-пароль

2.3 Перевіряємо роботу Config Server

Запустіть ваш додаток Config Server. Якщо все налаштовано правильно, перейдіть за адресою:

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

Приклад:

http://localhost:8888/application/default

Це поверне дані конфігурації з репозиторію Git. Ви побачите щось на кшталт:

{
  "name": "application",
  "profiles": ["default"],
  "label": "main",
  "version": "123abc",
  "propertySources": [
    {
      "name": "https://github.com/ваш-користувач/ваш-репозиторій/application.properties",
      "source": {
        "example.property": "Hello from the Config Server!"
      }
    }
  ]
}

Вітаю! Ваш Config Server працює.


Крок 3: Підключення клієнта до Config Server

3.1 Налаштування клієнта

Тепер створимо клієнтський додаток, який буде отримувати конфігурації з Config Server.

  1. Створіть новий Spring Boot проєкт.
  2. Додайте залежність Spring Cloud Config Client:
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-config</artifactId>
</dependency>
  1. Налаштуйте файл application.yml клієнта:
spring:
  application:
    name: my-client-application # Ім'я додатку має співпадати з конфігураційним файлом у репозиторії (my-client-application.properties)
  cloud:
    config:
      uri: http://localhost:8888 # URL нашого Config Server

3.2 Використовуємо отримані конфігурації

Створимо REST-контролер, щоб перевірити, чи отримали ми конфігурацію. Наприклад:

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}") // Отримуємо значення з Config Server
    private String exampleProperty;

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

Тепер запускаємо клієнт і відкриваємо:

http://localhost:8080/config

Ви побачите:

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

Типові помилки та їх виправлення

Якщо ваш Config Server або клієнт не працює, ось кілька перевірок:

  1. Config Server повертає помилку 404, 401 або 500. Перевірте:
    • URL та доступність репозиторію.
    • Логін/пароль (якщо репозиторій приватний).
    • Чи знаходяться конфігураційні файли у вказаній гілці.
  2. Клієнт не може підключитися до Config Server.

    • Перевірте spring.cloud.config.uri у конфігурації клієнта.
    • Переконайтеся, що Config Server запущений і доступний за вказаним портом.
  3. Клієнт не отримує конфігурацію.

    • Переконайтеся, що ім'я клієнта (spring.application.name) співпадає з назвою файлу в репозиторії.
    • Переконайтеся, що файл доступний і коректний.

Тепер у вас є робочий Spring Cloud Config Server! Уявіть, яку міць він дає для централізованого управління мікросервісами. У наступній лекції навчимося оновлювати конфігурації "на льоту", щоб ваші додатки могли міняти настрій так само швидко, як програмісти міняють код.

Коментарі
  • популярні
  • нові
  • старі
Щоб залишити коментар, потрібно ввійти в систему
Для цієї сторінки немає коментарів.