Spring Cloud Config 정리(1)
spring 의 config 정보들을 관리해주는 원격 config server를 쉽게 구축 가능
cloud config 의 property source를 찾는 기본 전략은 설정이 있는 git repository를 clone 하고 작은 SpringApplication 을 띄워서 이 repository의 설정 파일을 이용한다.
또한 JSON 엔드포인트로 제공된다.
config server에 기본적인 git 주소를 셋팅해야한다.
$ .properties
spring.cloud.config.server.git.uri=#GIT REPO ADDRESS#or .yml
spring:
cloud:
config:
server:
git:
uri: #GIT REPO ADDRESS
해당 git repository 에는 설정파일이 존재해야 하며
{application}.(properties |yml) 을 만들어두면된다.
spring cloud server에서는 이렇게 참조된 설정정보를 접근하는 엔드포인트가 아래와 같이 제공된다.
/{application}/{profile}[/{label}]
/{application}-{profile}.yml
/{label}/{application}-{profile}.yml
/{application}-{profile}.properties
/{label}/{application}-{profile}.properties
application은 SpringApplcation에서 spring.config.name 으로 설정되면 안된다.
profile 은 active profile (또는 “,”로 구분된 properties list)이다.
label 은 optional git label 이다 (default 는 master)
- client side usage
spring cloud config client로 의존성 정의 필요.
Http Server에서, 서버가 동작할때 외부 설정을 기본로컬서버 8888에서 찾는다.

변경하기 위해서는 bootstrap.properties (application.properties 와 유사) 를 사용해야 한다.
spring.cloud.config.uri: http://myconfigserver.com

2. server side usage
@EnableConfigServer 어노테이션으로 config server로 동작하도록 한다.
spring.cloud.config.server.git.uri=$GIT REPO ADDRESS
application properties 에 git 주소를 지정해야한다.
Config Server를 위해 설정정보를 어디에 저장해야 하는가?
이 행동을 지배하는 전략은 EnviromentRepository 이고,
Enviroment 객체를 전달한다.
이 Environment 는 Spring Environment (propertySources를 포함한다) 로 부터 shallow copy된다.
Environment는 3개의 변수들로 이루어졌다.
{application}
, which maps tospring.application.name
on the client side.{profile}
, which maps tospring.profiles.active
on the client (comma-separated list).{label}
, which is a server side feature labelling a "versioned" set of config files.
- git URI 에 placeholder 지원된다. (application , profile, label)
- 패턴 매칭과 멀티 레파지토리
- 인증 (ID/PW, AWS codeCommit, SSH configuration)
- placeholders in git search paths
- force pull in gir respoistories
- deleteing untracked brances in gir repositories
Version Control Backend Filesystem Use
Composite Environment Repositories
여러 repository를 참조할때 order property를 명시하여 이용할수 있다.
… 계속,