18.1.다단 애플리케이션 설정

  • 설정 모델은 설정에 담긴 데이터의 구조를 반영해야 한다.
  • 설정 데이터의 종류는 주로 다음 세 가지다.
  • 버전에 따라 달라지는 설정: 모든 환경에서 동일하지만 버전별로 달라지는 설정
  • 환경에 따라 달라지는 설정: 환경별로 달라지는 설정
  • 기능 설정: 버전별로 애플리케이션의 동작을 달리하기 위한 설정

실습 예제 애플리케이션을 이미지에 포함된 기본 설정으로 실행하라. 그리고 동일한 이미지를 개발 환경 설정 오버라이드 설정 파일을 적용해 다시 한 번 실행하라.

  • 설정 관리 라이브러리인 node-config를 사용하는 Node.js 애플리케이션
  • node-config는 여러 곳에 위치한 파일에서 단계별로 정의된 설정값을 읽어 들이고 병합해 설정을 구성한 다음, 환경 변수로 이 설정을 오버라이드하는 방식으로 설정을 관리한다.
  • 예제 애플리케이션 access-logs는 다음 두 디렉터리에서 설정을 읽어 온다.
  • config: 기본 설정으로 도커 이미지에 포함되는 설정
  • config-override: 이미지에는 포함되지 않지만 볼륨, 컨피그 객체, 비밀값 등을 통해 컨테이너 파일 시스템에 주입되는 설정
 cd ch18/exercises/access-log

➜ docker container run -dp 8080:80 diamol/ch18-access-log
422bdd925c7a58fe98cedb1a09b14328cfdde1eed01f5f7aa9056ae410baf78b

➜ docker container run -dp 8081:80 -v "$(pwd)/config/dev:/app/config-override" diamol/ch18-access-log 
0967976accbb011c18998c04e33d6c3f117634a1ca61d3d9300e5d0ec56b4291

➜ curl http://localhost:8080/config
{"release":"19.12","environment":"UNKNOWN","metricsEnabled":true}%                                                   curl http://localhost:8081/config
{"release":"19.12","environment":"DEV","metricsEnabled":false}%                                                     
  • 여기서는 로컬 바인드를 사용했으나 클러스터에 저장된 컨피그 객체나 비밀값을 사용해도 같은 결과를 얻을 수 있다.

실습 access-log 애플리케이션의 세 번째 컨테이너를 실행하라. 이 컨테이너는 개발 환경 설정을 적용하되 프로메테우스 정보 수집을 활성화해야 한다. 개발 환경 설정 파일은 볼륨 마운트를 통해 주입하며 정보 수집 여부는 환경 변수 설정을 통해 오버라이드한다.

  • node-config 패키지에는 환경 변수로부터 설정값을 불러오는 기능도 있다.
  • 이 설정값으로 파일 계층에서 불러온 설정값을 오버라이드할 수 있다.
  • 다만 환경 변수에 단일 값을 정의하는 대신 JSON 포맷 문자열을 값으로 정의해야 한다는 점이 불편하다
 cd ch18/exercises/access-log

➜ docker container run -d -p 8082:80 -v "$(pwd)/config/dev:/app/config-override" -e NODE_CONFIG='{\"metrics\":{\"enabled\":\"true\"}}' diamol/ch18-access-log
cfebb935d344efdb6064c643988de3e1ec269378a4c00bd4ca70290292d33586

➜ curl http://localhost:8082/config
{"release":"19.12","environment":"DEV","metricsEnabled":true}
  • 컨테이너의 설정은 이미지에 포함된 기본 설정 파일 > 볼륨으로 마운트된 로컬 디렉터리의 오버라이드 설정 파일 > 환경 변수를 병합해 만들어졌다.

links

social