최대 1 분 소요

멀티 환경에서 구성 정보를 달리 할 수 있는 방법에 대해 알아보자.
이를 위해, 다양한 profiles를 가진 구성 정보 파일(yml)을 여러개 만들어놓고 상황에 맞는 yml 파일을 적용할 것이다.

여러 profiles를 갖는 yml 파일 생성

ecommerce.yml

token:
  expiration_time: 864000000
  secret: my_token_default

gateway:
  ip: 127.0.0.1


ecommerce-dev.yml

token:
  expiration_time: 864000000
  secret: my_token_default_dev

gateway:
  ip: 127.0.0.1


ecommerce-prod.yml

token:
  expiration_time: 864000000
  secret: my_token_default_prod

gateway:
  ip: 127.0.0.1


add - commit 까지 마친다.

bootstrap.yml 변경

user-servicegateway-servicebootstrap.yml 파일을 변경한다.

user-service

spring:
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: ecommerce
  profiles: # 🌟 추가
    active: dev


gateway-service

spring:
  cloud:
    config:
      uri: http://127.0.0.1:8888
      name: ecommerce
  profiles: # 🌟 추가
    active: prod


이렇게 변경한 뒤, user-servicegateway-service 두 개의 서버를 재기동한다.

테스트

user-servicegateway-service에 토큰을 가져오는 부분(env.getProperty("token.secret"))에 break point를 찍고, 디버그 모드로 실행하자.
포스트맨으로 로그인을 진행해보자.
스크린샷 2022-10-05 오후 2 39 32
user-service에서는 my_token_dev를 가져왔다.
(토큰값을 확인하기 위해서는, 위 사진에서 보이는 것처럼 env.getProperty("token.secret")을 입력하고 오른쪽 +로 추가한다.)

이번에는 로그인 하고 받은 토큰을 이용해 /user-service/health-check로 요청해보자.
스크린샷 2022-10-05 오후 2 42 23
gateway-service에서는 my_token_prod를 가져왔다.

이처럼 토큰 정보가 다르기 때문에 권한이 없다는 오류가 발생한다.
스크린샷 2022-10-05 오후 2 47 52
따라서 같은 토큰을 사용할 수 있도록 gateway-servicebootstrap.yml에서 spring.profiles.active를 기존 prod에서 dev로 바꾼다.

스크린샷 2022-10-05 오후 2 52 12
이번에는 200 OK 를 확인할 수 있다.



💛 개인 공부 기록용 블로그입니다. 👻

맨 위로 이동하기