spring cloud config로 환경변수 관리

박재연·2023년 9월 6일
0

현재 소스에 application.yml이 포함되서 github에 올라가고 있는데 중요 정보들이 포함되어 있으니 파일을 따로 관리해야 한다.

  1. 기본 세팅 application.yml은 그대로 github에 올리지만, db정보나 기타 중요한 정보들은 application-dev.yml, application-prd.yml처럼 환경에 따라 정보 가져올 수 있도록 한다.
  2. 이런 파일들은 aws s3에서 관리한다.

-> spring cloud config를 사용해보자

🤔 spring cloud config는 무엇인가?

공식문서 (https://docs.spring.io/spring-cloud-config/docs/current/reference/html/)
-> 여러 서비스들의 환경 설정 정보를 중앙에 모아 관리하는 라이브러리
그림처럼 여러 서비스들의 환경변수들을 한 군데 모아 두고 config server에서 가져올 수 있음
환경변수가 변경되어도 한 곳에서만 변경하고 refresh를 통해 변경된 환경변수 세팅 가능

내가 해야할 것은 s3이지만, 공식 문서를 보니 git이나 redis등등 지원 중

spring cloud config server 만들기

main 설정
@EnableConfigServer 추가

application.yml 설정

  1. AWS S3를 사용하기 위한 profiles.active
  2. 지역은 ap-northeast-2를 사용하고 bucket은 my-bucket을 사용하겠다
  3. 여기에는 빠져있지만 현재 로컬에 aws credential 이미 세팅되어 있다 -> accessKey, secretKey 접근로 접근 (추후 글 작성 예정)

현재 s3의 my-bucket안에 application-dev.yml 파일 존재
호출 url: http://localhost:8888/${S3-FILE-NAME}/${PROFILE-NAME}
즉, 지금의 경우 http://localhost:8888/application/dev 로 정보 호출
호출 시 "source" 하위에 yml 파일 환경변수들이 나타난다

spring cloud config client 만들기

application.yml 설정

spring.config.import 부분에 cloud config server url 작성
spring.cloud.config 부분에 불러올 파일 세팅
actuator는 환경변수가 변경됐을 경우 refresh를 통해 가져오려고 세팅

나의 경우 application.yml에 db정보를 세팅해놓고 가져오는 방식을 사용했기 때문에 datasource부분이 추가되어 있다

TestController 설정

정확한 값이 호출되는지 확인을 위한 컨트롤러

호출해보자

세팅한 값이 나온다

그렇다면 환경변수의 값이 변경되었을 경우에는?
-> 위에서 세팅한 actuator로 확인해보자
먼저, s3에 있는 application-dev.yml 파일을 수정 (나의 경우 'hong gil dong'으로 수정하였다)


refresh를 호출하니 변경된 값들이 나타나는 듯 하다
다시 TestController를 호출해보자

변경된 값 'hong gil dong'이 표시된다


하여 이 방법으로 application.yml 파일을 관리하려고 하였으나,
지금 서비스도 많이 없는데 굳이 config server를 하나 더 만들어야 하는가? 라는 생각이 들어서 다른 방법을 찾아보았다.

다른 방법은 다음 글에..

0개의 댓글