딸기말차

[MSA] 7. Docker 활용, ConfigServer 본문

Bootcamp/MSA

[MSA] 7. Docker 활용, ConfigServer

딸기말차 2023. 10. 13. 12:24

엔코아 플레이데이터(Encore Playdata) Backend 2기 백엔드 개발 부트캠프 (playdata.io)

 

백엔드 개발 부트캠프

백엔드 기초부터 배포까지! 매력있는 백엔드 개발자 포트폴리오를 완성하여 취업하세요.

playdata.io


1. Maven Build, Docker Image

* 패키지 내 .mvn 파일 확인
ls -al 이나 ll 로 쳤을 때 .mvn 파일이 있어야 ./mvnw 로 시작하는 커맨드를 사용 가능하다.

# 패키지 내에 .mvn 파일이 없을 경우 cp를 통해 복사해온다. 
.mvn 파일이 있는 패키지로 가서 cp -R .mvn [이동할 패키지 경로]/.mvn 커맨드를 통해 .mvn 파일을 복사

# maven build
./mvnw clean package

# maven을 통해 docker image 생성
./mvnw package dockerfile:build

생성한 image 확인

* docker-compose 커맨드 실행을 위해 docker-compose.yml 파일이 있는 패키지로 이동

# configserver와 license-service를 묶어 실행하기 위해 docker-compose 사용
docker-compose up

# background 에서 실행
docker-compose up -d

백그라운드에서 실행

# docker-compose를 통해 실행한 컨테이너 중지
docker-compose down

실행중인 컨테이너 중지

이때, 컨테이너를 실행 후 DB에 INSERT 나 UPDATE를 했다고 가정했을 때 backup을 해두지 않았다면, 컨테이너를 내리고 다시 올릴 시 변경한 데이터가 날아가기 때문에 주의해야한다.


2.  Vault

Valut 란 ID 기반 비밀 및 암호화 관리 시스템이다.


여기서 비밀이란 공개되면 안되는 API 암호화 키, 암호 또는 인증서와 같이 액세스를 엄격하게 제어하려는 모든 것을 의미하고, Vault는 인증 및 권한 부여 방법으로 차단되는 암호화 서비스를 제공해준다.

# valut image 생성
docker run -d -p 8200:8200 --name vault 
-e 'VAULT_DEV_ROOT_TOKEN_ID=myroot' 
-e 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:8200' vault:1.13.3

* 주요 옵션
run -d : background 실행
-e : 환경변수
0.0.0.0 : 모든 ip 허용

localhost:8200으로 접속

 

이미지를 만들 때 환경변수 정보에 토큰을 myroot 로 설정했기 때문에, myroot를 입력하면 접속이 가능하다.

 

valut 접속
secret 값 생성

 

설정한 값을 확인하기 위해 configserver의 bootstrap.yml 설정 정보를 변경하고, 재빌드하여 api를 호출하였다.

bootstrap.yml이 있는 디렉토리로 이동
active 설정 및 host 설정 변경

profiles.active 정보를 valut, host의 ip를 자신의 환경에 맞게 변경해준다.

이때 현재 우분투 환경이기 때문에, ifconfig를 통해 자신의 ip를 확인 후 변경해주면 된다.

# 기존에 실행중이던 docker-compose down
# 해당 작업은 docker-compose.yml이 있는 디렉토리 내에서 실행해야한다.
docker-compose down

# .mvn 이 있는 디렉토리 내에서 재빌드
./mvnw clean package
./mvnw package dockerfile:build

# 재빌드 후 docker-compose.yml이 있는 디렉토리 내에서 컨테이너 실행
docker-compose up -d

# 터미널에서 api 호출
curl -X "GET" "http://localhost:8071/licensing-service/default" -H "X-config-Token: myroot"

api 호출 결과


3. 54일차 후기

마이크로서비스의 공통 정보를 기록하고 있는 configserver와 licensing-service를 도커 이미지로 만들어 docker-compose를 통해 한번에 여러 컨테이너를 띄우는 실습을 진행하였다.

 

이 때 현재 우분투 환경에서 실습을 하고 있기 때문에 ip를 우분투에 맞게 바꿔줘야하는 것에 주의해야하며,

마이크로서비스의 공통 된 정보를 configserver라는 통합 된 환경을 만들어 관리할 수 있다는 점이 편리하다는 생각이 들었다.

'Bootcamp > MSA' 카테고리의 다른 글

[MSA] 9. centOS, Kubernates 설치  (0) 2023.10.20
[MSA] 8. Config Server, Eureka Server  (0) 2023.10.19
[MSA] 6. Docker 활용, SQL 예제  (0) 2023.10.12
[MSA] 5. Docker 활용, Compose  (0) 2023.10.11
[MSA] 4. Docker 활용, Image Build  (0) 2023.10.10