Spring Cloud Config Server

13 June 2017

spring cloud config를 통해, 서버의 설정을 하나의 서버로 집중화시킬 수 있습니다.
해당 서버를 통해, properties를 하나의 서버로 모으고 config client 서버가 시작할 때 해당 서버로부터 property 값을 읽어와 적용하게 됩니다.

가장 먼저, 해당 properties 값을 제공하는 config server를 셋팅해보도록 하겠습니다.

아래와 같이 @EnableConfigServer 와 @SpringBootApplication 를 설정함으로써 해당 서버가 cloud config server로 사용되는 것으로 선언합니다.

package org.blog.test;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer;
import org.springframework.context.annotation.Configuration;

@SpringBootApplication
@EnableConfigServer
public class ConfigServerApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConfigServerApplication.class, args);
    }
}

이후, 아래와 같이 resource를 어디에서 읽어올지 설정합니다.
아래 예제에서는 git이 아닌, 서버 내 file을 통해 property를 제공하도록 설정하였습니다.
spring:
  profiles:
    active: native
  cloud:
    config:
      server:
        native:
          search-locations: classpath:/config/{application}/{profile}
server:
  port: 8888
config server를 설정하고 테스트하면서, 어려웠던 점은 해당 config server에서 제대로 property를 제공하고 있는지 확인하는 작업이었습니다.
다수의 구글링 끝에 아래와 같이 확인이 가능하다는 것을 찾게 되었습니다.
http://localhost:8888/config-client/stg

{
  "name": "config-client",
  "profiles": [
    "stg"
  ],
  "label": null,
  "version": null,
  "state": null,
  "propertySources": [
    {
      "name": "classpath:/config/config-client/stg/application.properties",
      "source": {
        "message": "hellow stg"
      }
    }
  ]
}
다음으로, config client를 설정해보도록 합니다.
spring cloud starter config 를 dependency에 추가해준 후, 아래와 같이 설정하면 cloud 상에서 해당 서버의 name과 profile 설정이 가능합니다.
아래와 같이 설정한 값을 바탕으로 cloud config server로부터 값을 읽어오게 됩니다.
spring:
  cloud:
    config:
      name: config-client
      profile: stg

- profile이 dev인 경우

2017-06-13 23:57:21.886  INFO 12464 --- [           main] org.blog.test.ConfigClientApplication    : message : hellow dev

- profile이 stg인 경우

2017-06-13 23:58:13.139  INFO 1056 --- [           main] org.blog.test.ConfigClientApplication    : message : hellow stg
전체 예제는 아래 링크에서 다운로드 가능합니다.

https://gitlab.com/shashaka/config-server-project

https://gitlab.com/shashaka/config-client-project