Spring Cloud Bus & Spring Cloud Config monitor 를 활용한런타입 Refresh configurations

날아올라돼지야·2024년 8월 27일
0

이번 챕터에서는 Spring Cloud Bus와 Spring Cloud Config Monitor를 사용하여 마이크로서비스 구성 변경을 자동화하는 방법을 배웁니다.

이 방법을 사용하면 GitHub의 변경 사항이 자동으로 Spring Cloud Config Server로 전달되고, 구성 파일이 업데이트되며, 마이크로서비스 인스턴스들이 새로고침 없이 최신 구성을 반영할 수 있습니다.

1. Spring Cloud Config Monitor 의존성 추가

config-server의 pom.xml 파일에 Spring Cloud Config Monitor 의존성을 추가합니다.

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

이 의존성을 추가하면 config-server는 /monitor라는 새로운 API 엔드포인트를 노출합니다.

2. Application.yml 설정

config-server의 application.yml 파일에서, management.endpoints.web.exposure.include 설정을 추가하여 모든 관리 엔드포인트를 노출합니다.

management:
  endpoints:
    web:
      exposure:
        include: "*"

3. RabbitMQ 연결 설정

config-server와 모든 마이크로서비스의 application.yml 파일에 RabbitMQ 연결 설정을 추가합니다.

spring:
  rabbitmq:
    host: localhost
    port: 5672
    username: guest
    password: guest

4.GitHub Webhook 설정

GitHub 리포지토리 설정에서 Webhook을 추가합니다. Webhook은 GitHub에서 변경이 발생할 때마다 자동으로 /monitor API를 호출합니다.
Webhook URL은 다음과 같이 설정합니다:

http://:8071/monitor

이 설정은 GitHub의 변경 사항이 자동으로 Config Server로 전달되도록 합니다.

5. Webhook 테스트

변경 사항이 GitHub에 커밋되면, Webhook이 자동으로 /monitor API를 호출하고, Spring Cloud Bus와 RabbitMQ를 통해 모든 관련 마이크로서비스 인스턴스에 구성 변경 사항이 전파됩니다.

이 과정에서 수동으로 bus refresh 또는 refresh API를 호출할 필요가 없습니다.

6. Webhook 생성 및 테스트

GitHub 리포지토리에서 Webhook을 설정하고, 변경 사항이 푸시될 때마다 /monitor API를 호출하도록 구성합니다.
GitHub에서 구성 파일을 수정하고 커밋합니다.

7. 마이크로서비스 확인

변경 사항이 적용된 후, 각 마이크로서비스 인스턴스가 새로운 구성을 반영하는지 확인합니다. 이전과 달리 bus refresh를 수동으로 호출할 필요가 없습니다.

이 프로세스는 아래와 같은 흐름을 따릅니다:

  • GitHub에서 구성 파일 변경: 변경 사항이 커밋되고 푸시됩니다.
  • Webhook 호출: GitHub Webhook이 /monitor API를 호출합니다.
  • Spring Cloud Bus 및 RabbitMQ 통신: Spring Cloud Config Server는 Spring Cloud Bus와 RabbitMQ를 통해 모든 마이크로서비스 인스턴스에 변경 사항을 전파합니다.
  • 마이크로서비스 자동 새로고침: 모든 관련 마이크로서비스 인스턴스가 새로고침 없이 최신 구성을 자동으로 반영합니다.

정리하면

이 방법을 사용하면 마이크로서비스의 구성 변경을 자동화할 수 있으며, 수동 개입 없이 구성 파일 변경 사항이 자동으로 전파됩니다. 이를 통해 운영의 편의성과 효율성을 크게 향상시킬 수 있습니다.

다음 챕터부턴 마이크로서비스를 Docker 이미지로 변환하고, 이를 Docker Compose를 사용해 실행하는 방법을 다룹니다.

profile
무슨 생각하며 사니

0개의 댓글