- 분산 시스템에서 서버, 클라이언트 구성에 필요한 설정 정보(application.properties)를 외부 시스템에서 관리하는 방법
- 하나의 중앙화된 저장소에서 구성 요소를 관리할 수 있다.
- 각 서비스를 다시 빌드하지 않고 바로 적용할 수 있다.
- 어플리케이션 배포 파이프라인을 통해 DEV(개발) - UAT(테스트) - PROD(운영) 환경에 맞는 구성 정보를 사용할 수 있다.
@EnableConfigServer
어노테이션을 추가해준다.@SpringBootApplication
@EnableConfigServer // Spring Config Server 역할로 등록하기 위함
public class ConfigServiceApplication {
server:
port: 8888
spring:
application:
name: config-service
profiles:
active: native
cloud:
config:
server:
native:
search-locations: file://${user.home}/[directory]
spring.cloud.config.server.native.search-locations
항목에 설정 정보 파일이 위치한 위치를 작성해주면 된다.
server:
port: 8888
spring:
application:
name: config-service
cloud:
config:
server:
git:
uri: #(local/remote git-uri)
spring.cloud.config.server.git.uri
항목에 설정 정보 파일이 위치한 local/remote git uri를 작성해주면 된다.
local의 경우 file://[local directory info]
remote의 경우 https://github.com/[user]/[repository]
형태로 입력할 수 있다.
remote uri(git repository)를 사용할 땐 해당 레포지토리가 private으로 설정되지는 않았는지 반드시 확인한다!
private repository의 경우 uri와 동일한 레벨에 username, password 속성을 추가해주어야 한다.
localhost:[port]/[설정파일이름]/default
를 호출하면 해당하는 설정 파일 내용이 조회된다.
Spring Cloud Config Server를 통해 설정한 설정 파일의 내용이 변경되었을 때는 어떻게 적용할 수 있을까?
- application 상태를 모니터링할 수 있는 작업
- 의존성 추가 하나로 지표 수집을 위한 http end point를 제공한다.
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
management:
endpoints:
web:
exposure:
include: refresh, health, beans
기동 후 http://(서비스host):(port)/actuator/refresh
를 post
방식으로 호출하면 config server에서 변경한 설정 파일이 적용되는 것을 확인할 수 있다.