SMALL
  • Spring Cloud Config란
  • 구성도
  • Spring Cloud Config 환경 구축
    • Git Repository 설정
    • Server Side 설정
    • Client Side 설정

 

Spring Cloud Config란

Spring Cloud Config는 분산 시스템에서 설정 정보를 외부로 분리하기 위해서 Server-Client 구조를 제공한다.

Config Server를 이용하여 중앙에서 Application들의 설정을 관리할 수 있다. 

Spring Cloud Config의 Default 서버 설정은 GIT Repository이다. 

다만, 다양한 형태의 관리 체계도 지원한다. ( git, db, file, vault, redis...)

 

Spring Cloud Config가 필요한 이유는

MSA 환경에서 여러 Service들의 설정을 중앙화 하여 통일,

설정 수정에 따른 배포를 최소화,

각 Stage(Dev, Test, Prod..) 단계 별로 설정 값 분리하여 관리하기 위해서이다.

 

 

구성도

 

Git Repository 설정

Git lab, GitHub과 같은 환경을 활용하여 Config를 관리할 git repository를 생성한다.

Git Repository를 생성한 이후에 설정 정보를 입력할 파일을 만든다. 

${ApplicationName}-${EnvironmentName}.yml 과 같은 형태로 만들면 된다.

 

 

Server Side 설정

 

pom.xml ( dependency 설정 )

		<dependency>
			<groupId>org.springframework.cloud</groupId>
			<artifactId>spring-cloud-config-server</artifactId>
		</dependency>

 

application.properties ( spring boot 설정 )

spring.cloud.config.server.git.default-label=master
spring.cloud.config.server.git.uri=https://github.com/USER_INFO/REPO_INFO.git

위와 같이 설정 정보가 존재하는 git의 위치를 설정해 주면 된다.

추가적으로 label이라는 설정은 git에서 사용하는 branch 설정이다.

default값은 master로 되어있다.

만약 자신이 작업하는 git의 branch가 master가 아닌경우 해당 설정을 수정해주어야 한다.

 

Spring Main Application 

@SpringBootApplication
@EnableConfigServer // ADDED!
public class SbaServerApplication {

	private static final Logger log = LoggerFactory.getLogger(SbaServerApplication.class);
	
	public static void main(String[] args) {
		SpringApplication.run(SbaServerApplication.class, args);
	}
}

여기까지 설정하면 Server Side의 설정은 모두 완료되었다.

그럼 여기서 설정이 정확하게 되었는지 확인해보도록 하자.

SpringAppliation을 Run 한 상태에서 아래 명령어를 호출해 보자.

curl -X GET "http://localhost:PORT//APP_NAME/ENV"

ex : curl -X GET "http://localhost:8000/apptest/dev"

 

 

 

 

{
    "name": "apptest",
    "profiles": [
        "dev"
    ],
    "label": null,
    "version": "44fac5ed31dbb04e4ace74f7a34a4763a56fade0",
    "state": null,
    "propertySources": [
        {
            "name": "https://github.com/--/--.git/file:C:\\Users\\TTT\\AppData\\Local\\Temp\\config-repo-3582490668620281315\\apptest-dev.yml",
            "source": {
                "test.user.age": "HeeeLLLeee",
                "test.comm": 123
            }
        }
    ]
}

 

이러한 형태로 응답을 받으면 이제 Server는 Client에게 설정을 줄 준비가 된 것이다.

그럼 다음으로 Client-Side의 환경 세팅을 보도록 하자. 

 

 

 

LIST

+ Recent posts