반응형
목적
- 모든 msa에서 config(yml, properites)를 따로 관리하게 된다면 수정 및 보완에 불편하기 때문에 config를 관리해주는 Module 생성
config server 사용법
Git을 이용한 설정
- Git repo를 새로 만든다.
- config 공통 설정 정보가 들어있는 yml 파일 생성
- yml 파일 설정 우선순위
application.yml -> application-name.yml -> application-name-.yml
- 현재 예시에서는 ecommerce.yml을 생성
token:
expiration-time: 86400000 # 하루
secret: spring_sercret_key
- Config Server 프로젝트 생성
- Config Server Dependency 추가
- main문에 ConfigServer 설정을 가진다는 것을 알리는 annotation 추가
@SpringBootApplication
@EnableConfigServer
public class ConfigServiceApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServiceApplication.class, args);
}
}
- config service project에 yml 파일 설정
server:
port: 8888
spring:
application:
name: config-server
cloud:
config:
server:
git:
# uri: https://<git repo>.git
# private repo 일 경우 username passowrd 추가하기
# username: abcd
# password: abcd
uri: file:///D:\Programs\Intellij\Programs\webprojects\class-project\sping-cloud-config
- server port 설정(다른 msa 서버에서 접근해야 하기 때문에 포트 확인 필요
- git을 사용할 경우 git.uri로 설정
- local file 디렉토리인 경우
- config(yml)파일이 존재하는 디렉토리의 파일들을 모두 git에 commit을 해준 상태야 합니다.
file:
키워드를 넣어서 연결- windows인경우 : file 다음에 ///로 넣어 줘야합니다.
- uri에 config yml파일들이 존재하는 위치를 넣어 준다
- git 일경우 : git url을 넣어 주면 됩니다.
- 프로젝트 실행 후 접속해서 확인
- uri는 localhost로 할 경우 확인하기 어렵고 127.0.0.1 과 같은 ip주소나, domain주소를 사용해야지 접속 가능합니다.
- ecommerce.yml 파일 일 경우 url를
http://127.0.0.1:8888/ecommerce/default
로 접속해서 볼 수 있습니다.
Local 파일 디렉토리 사용하기
- config-service Project application.yml 파일 수정
- profiles 로 native 설정
- native.search-locations에 file 위치를 설정해서 yml 파일을 load한다.
RabbitMQ로 Config 연동
- config-service, config file을 받을 프로젝트에 gradle 추가 dependency 추가
dependencies {
// ...
implementation 'org.springframework.cloud:spring-cloud-starter-bus-amqp'
// ...
}
- config-service application.yml 코드 추가
- RabbitMQ 연경을 위해서 다른 MSA 프로젝트의 application.yml 정보 추가
- 다른 msa application에서 application.yml을 재외하고, 추가적으로 추가해야하는 정보는 아래에 참고해주세요.
MSA 프로젝트에 Config Service 연결
- gradle에 dependency 추가
dependencies {
//...
implementation 'org.springframework.cloud:spring-cloud-starter-config'
implementation 'org.springframework.cloud:spring-cloud-starter-bootstrap'
implementation 'org.springframework.boot:spring-boot-starter-actuator'
//...
}
bootstrap.yml
파일 추가
- gradle에 추가한
spring-cloud-starter-bootstrap
를 통해서bootstrap.yml
파일을 load 하게 됩니다. application.yml
이나 다른 우선순위가 있는 yml파일이 있으면 그 yml파일과bootstrap.yml
둘다 load 됩니다.
spring:
cloud:
config:
uri: http://127.0.0.1:8888
name: ecommerce
profiles:
active: dev
- config-service의 uri를 추가
- 만약 profile을 설정하고 싶을 경우 profiles를 넣어 주면됩니다.
- 위와 같이 설정을 하게 된다면 config server와 현재 msa 서비스 서버랑 연결만 하였습니다.
- config server와 msa service서버와의 기능 추가
- application.yml 파일에 코드 추가
management:
endpoints:
web:
exposure:
include: refresh, health, beans, busrefresh
http://{baseurl}:{port}/actuator/{exposure.include}
로 호출 가능- baens : 현재 msa의 service(ex: user-service)에 등록된 bean의 정보를 보여주는 것
- refresh : config yml 정보가 수정되었을 때 api를 post 형태로 호출하므로서 각 msa에 변경된 yml파일을 동기화 시키기 위해서 사용
- yml 수정이 없었을 때
- yml 수정하고, git에 commit을 했을 때
- 수정된 정보의 key만을 response로 반환해준다.
- busrefresh : rabbitmq를 사용해서 config 설정 정보를 refresh하는 방법이다.
- refresh인경우 msa에서 gateway service와 하위에 묶여있는 service를 모두 각각 호출 해줘야지 config설정정보가 update되는 한계가 발생
- busrefresh는 message bus를 통해서 gateway에서 역겨 있는 모든 service의 config를 refresh해주는 역할을 한다.
config 설정 프로젝트를 submodule로 저장하는 방법
반응형
'Spring > MSA' 카테고리의 다른 글
Spring Cloud Contract를 이용한 Test 코드 작성 (0) | 2022.09.17 |
---|---|
Kafka 설치와 환경 구축 (2) | 2021.07.05 |
Gradle Multi Module 프로젝트 (2) | 2021.06.12 |