이전글에 이어서 yml 파일을 서비스중단없이 변경사항을 반영하는 것을 구현해보겠습니다.
spring cloud config로 yml파일 배포없이 변경해보기
spring cloud config로 yml파일 배포없이 변경해보기
본글에서는 spring cloud config를 통해 yml파일을 배포없이 변경사항을 반영해보는 것을 구현하려 합니다. 보통 서비스에서 application.yml하나만 적용하지 않고, profile 관리를통해 개발서버: application.ym
dnl1029.tistory.com
이전글에서, config-repo에 값을 변경해도 client단은 별다른 설정없이는 따로 변경사항이 반영되지 않는다는 사실을 확인하였습니다. 다시한번 테스트를 하면, 현재 서버는 x값이 10으로 바뀌었는데 client단은 반영되지 않고 있습니다.
이를 해결할수 있는 방법은 간단합니다. actuator 의존성을 추가 후, client의 yml파일에 아래와 같이 actuator 관련 코드를 추가합니다.
-client application.yml
management:
endpoints:
web:
exposure:
include: refresh, health, beans
그 후, postman에서 아래 경로로 POST 요청을 날려줍니다. 로컬서버에 refresh post요청을 보내면, 변경사항이 바로 반영됩니다. (localhost:8080/actuator/refresh)
client는 아래와 같이 ConfigServerConfigDataLoader 로그가 추가되네요. x값이 10으로 바뀐것을 정상적으로 확인할 수있습니다.
아직 변경사항 반영이 완전 자동화된것은 아닙니다. 자동화가 완벽하게 되려면 localhost:8080/actuator/refresh라는 POST 요청을 자동적으로 날릴수 있어야 하는데요.
1) spring에서 스케쥴을 설정해, 일정시간마다 refresh 요청을 날리기
2) bitbucket 혹은 github의 webhook을 활용해, config-repo에 변경사항 발생시, post api를 호출하도록 설정 POST : localhost:8080/actuator/refresh
config 변경은 자주있는 일이 아니므로, 스케쥴보단 2번 webhook 방식이 더 좋을것같습니다. github에서 Settings > Webhooks에서 추가할 수 있습니다. 자세한 것은 github webhook 가이드를 참고하세요.(https://docs.github.com/ko/webhooks-and-events/webhooks/creating-webhooks)
댓글