MSA

Config service

혀눅짱 2023. 9. 4. 10:57

프로젝에 필요한 설정들을 별도로 관리하는 config server 프로젝트를 생성한다.

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

디펜던시에 spring cloud config server를 추가한후

 

메인 어플리케이션에

@EnableConfigServer

어노테이션을 추가하도록 한다.

 

cloud:
  config:
    server:
      git:
        #uri: https://github.com/lhw7511/spring-cloud-config
        uri: file:///config file 경로

config 파일경로에

컨피그이름.yml 또는 컨피그이름-액티브이름.yml 액티브는(dev,prod 등 상황과 환경에따른 분리파일들)

컨피그파일 이름을 ecommerce라고 설정한뒤 vi로 설정들을 세팅하였다.

 

config-service의 포트번호를 8888로 설정하고

로컬에서 호출해본다.

호출 url 규칙은  컨피그이름/액티브이름(없을시 default)가 규칙이다.

dev버전의 ecommerce 설정파일을 호출하였더니 정상적으로 출력되었다.

 

이다음으로는 user-service에 연동하여 설정파일을 불러오는 테스트를 진행하였다.

user-service yml에

spring:
  cloud:
    config:
      uri: http://localhost:8888
      name: ecommerce
  profiles:
    active: dev

config-service에 접근하도록 컨피그 서버 정보를 추가한다.

그 후  ecommerce-dev.yml의 설정파일을 user-service에 찍어보는 로직을 구현한다.

@GetMapping("/health_check")
public String status(){
    return String.format("It's Working in User Service"
            + ", port(local.server.port)=" + env.getProperty("local.server.port")
            + ", port(server.port)=" + env.getProperty("server.port2")
            + ", token secret=" + env.getProperty("token.secret")
            + ", token expiration time=" + env.getProperty("token.expiration_time")

    );
}

user-service에 직접 명시하지않고 config-service를 통해 토큰의 설정들을 불러들여서 정상적으로 출력된 모습을 확인 할 수 있었다.