DevOps/Spring Cloud로 개발하는 마이크로서비스 애플리케이션(MSA)

Spring Cloud Config

:)jun 2023. 3. 30. 23:40

Spring Cloud Config

  • 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보를 외부 시스템에서 관리
  • 하나의 중앙화 된 저장소에서 구성요소 관리 가능

 

Local Git Repository

 

Config-service 설정

1. pom.xml 설정

'spring-cloud-config-server' Dependencies 추가, @EnableConfigServer 추가

2. .yml 파일 설정

spring.cloud.config.server.git.uri: file://{로컬 깃 폴더 경로}

 

- 로컬 깃 폴더에 있는 .yml 파일 우선순위

application.yml -> application-name.yml -> application-name-<profile>.yml

예를 들어, 로컬 깃 폴더에 application.yml 과 ecommerce.yml 이 존재하고 어플리케이션 이름이 ecommerce인 서비스가 있다면, ecommerce.yml 파일이 application.yml 파일을 오버라이드해 우선 적용됨.

 

User-service 설정

1. pom.xml 설정

'spring-cloud-starter-config', 'spring-cloud-starter-bootstrap' Dependencies 추가

2. .yml 설정

spring.cloud.config.name: ecommerce

spring.config.import: optional:configserver:http://localhost:8888

 

서버를 재기동하면 적용됨.

하지만 재기동하지 않고 사용하는 방법은 없을까?

 

Actuator refresh

- Application 상태, 모니터링

- Metric 수집을 위한 Http End point 제공

1. pom.xml 설정

'spring-boot-starter-actuator' Dependencies 추가

2. .yml 설정

management.endpoints.web.exposure.include: refresh, health, beans

 

POST http://[service ip]/actuator/refresh 요청 시 적용

하지만 아직 작업이 번거롭다.

Spring Cloud Bus 이용

 

Remote Git Repository

config-service에 .yml 파일 uri 만 바꿔주면 됨.

 

Native File Repository (Git이 아니라 File System에 직접 저장하는 방법)

config-service의 .yml 파일에 spring.profiles.active: native 로 변경.

spring.cloud.config.server.native.search-locations: file://{폴더 경로}