https://github.com/jhj6185/MSA_dream.git
먼저 소스코드를 공개한다.
어떻게 했냐면
꽌뚜루웨이 블로그 참고했다
config 서버란 뭐냐..
깃허브에 config서버용 repository를 하나 파서, 거기에 ~.yml 을 다 적어줌
그럼 git에 있는 걸로 각각의 MS의 yml 파일 설정을 바꿀 수 있는 것!
implementation 'org.springframework.cloud:spring-cloud-config-server'
추가한다. config-server라는 것을 알려주는 것이다.
spring:
application:
name: config-service
cloud:
config:
server:
git:
uri: https://github.com/JongbaekKIm/Dream_MSA #Github Repository 주소
읽을 config server의 git uri를 써준다
이러면 이제 그 레포지토리를 읽어준다.
package com.dream.configserver;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
@SpringBootApplication
@EnableConfigServer //이게 필요함
public class ConfigServerApplication {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplication.class, args);
}
}
config는 server-client 관계이기 때문에
config-client가 필요하다
나는 각 MS에 이와같은 설정을 해주었고, 블로그 글에서는 대표적으로 manage-service 만 보여주겠다.
implementation 'org.springframework.boot:spring-boot-starter-actuator'
implementation 'org.springframework.cloud:spring-cloud-starter-config'
클라이언트에는 이와같은 설정이 필요하다
# eureka, devtools, datasource, myBatis 외부화 완료
server:
port: 8002
spring:
application:
name: manage-service
config: //config import에 의해 읽어짐
import: optional:configserver:http://localhost:8888
security: # security부터 keycloak 까지는 외부화 실패
oauth2:
resourceserver:
jwt:
jwk-set-uri: http://너님의 keycloak 서버 url:8080/auth/realms/MSA/protocol/openid-connect/certs
keycloak:
realm: MSA
bearer-only: true
ssl-required: external
resource: spring-gateway-client
auth-server-url: http://너님의 keycloak 서버 url:8080/auth
credentials:
secret: WEcACPUTWPfuhPrEz3bBaHcl7OLLmYX1
#logging:
# file:
# name: ${user.dir}/log/test.log # 로깅 파일 위치이다.
# max-history: 7 # 로그 파일 삭제 주기이다. 7일 이후 로그는 삭제한다.
# max-size: 10MB # 로그 파일 하나당 최대 파일 사이즈이다.
## level: # 각 package 별로 로깅 레벨을 지정할 수 있다.
## com.project.study : error
## com.project.study.controller : debug
#외부화 성공
#eureka:
# instance:
# instance-id: manage-microservice-instance
# client:
# register-with-eureka: true
# fetch-registry: true
# service-url:
# defaultZone: http://localhost:8761/eureka
#spring:
# devtools:
# livereload:
# enabled: true
# restart:
# enabled: true
# datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://너님의 mysql url:3306/dream?useSSL=false
&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul
# username: dream
# password: 1234
#mybatis:
# mapper-locations: /mapper/**/*.xml
# type-aliases-package: com.dream.manage.dto
먼저 외부화 시키고 싶은 부분을 주석 처리하거나 지우고,
config server가 읽을 uri였던 깃repository에 가서
spring:
application:
name: manage-service
# db 설정
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://너님의 mysql 서버 주소:3306/dream?useSSL=false
&allowPublicKeyRetrieval=true&serverTimezone=Asia/Seoul
username: dream
password: 너님의 mysql 비번
# mybatis 연동 설정
mybatis:
mapper-locations: /mapper/**/*.xml
# 유레카 클라이언트 설정
eureka:
instance:
instance-id: manage-microservice-instance # eureka에 등록되는 id 값
client:
register-with-eureka: true # 유레카에 등록할지 여부.
fetch-registry: true # 유레카에서 조회할지 여부
service-url:
defaultZone: http://localhost:8761/eureka # 서비스를 등록할 서버 주소를 지정
이런식으로 적으면 알아서 읽어준다.