컨테이너 설정,시크릿, 도커 네트워크(로드밸런싱)
3.3.3.5 서비스 컨테이너에 설정 정보 전달하기
환경설정이나 파일들을 컨테이너에 전달하기위해 env나 설정파일로 저장해두는 것 방법도 있지만 이 방법은 비 효율적이기에 이를 위해 secret과 config라는 스웜 모드에서만 사용될 수 있는 기능임
scret 사용하기
시크릿 키를 생성하여 my sql password 라는 이름으로 저장했다
secret key 에 배포된 두에 파일시스템이 아닌 메모리에 저장되기에 서비스 컨테이너가 삭제될 경우 같이 삭제됨
secret key로 생성한 mysql 컨테이너
해당 컨테이너로 생성된 시크릿 키 값이 /run/secretes/* 에 저장된 것 을 확인할 수 있음
해당 방식을 사용할려면 어플리케이션 개발할 때 각종 변수를 파일로부터 동적으로 읽어올 수 있도록 설계하면 장점을 활용 가능 함.
config 사용하기
config 사용 방식은 secret과 거의 유사 함
config.yml 파일을 작성하고 해당 파일을 기반으로 docker config를 등록하는 방식을 살펴 봄
data에 있는 값을 base64로 복호화 하면 원래 있는 값을 확인할 수 있음
3.3.3.6 도커 스웜 네트워크
스웜 모드는 여러 개의 도커 엔진에 같은 컨테이너를 분산해서 할당하기 때문에 하나로 묶인 네트워크 풀이 필요 함
docker network ls 명령으로 현제 구성된 도커 네트워크 목록을 확인 할 수 있음
ingress 로드 밸런싱과 라우팅 메시에 사용 됨 gwbbrige 는 스웜에서 오버레이를 사용할 수 있음
ingress 네트워크
- 스웜을 등록하면 자동으로 등록되는 네트워크
- 스웜모드를 사용할 때만 유용함
각종 클라이언트에서 ingress 네트워크를 통해 로드밸런싱을 거친후 각 스웜 컨테이너에 할당 되는 구조 방식을 가지고 있음 (라운드 로빈 방식)
docker service create --name hostname -p 80:80 \\
--repicas=4 alicek106/book:hostname # 호스트 네임을 웹서버에 띄우는 이미지
할당된 컨테이너에 아이디 값을 확인 함
같은 아이피로 접근했을때각기 다른 컨테이너 아이디가 뜨는 걸 볼 수 있음( 로드밸런싱이 작동했다라는 사실을 알 수 있음)
로드밸런싱 특성상 무조건 컨테이너로 접근하지 않고 라운드로빈 방식에 의해서 적절히 배분되어서 표출됨