[도커] AWS ECS를 사용한 배포 (단일 컨테이너 구성)

ECS같은 관리형 서비스를 사용하는 이점은 전체 생성관리, 업데이트, 모니터링, 스케일링 등의 과정들이 단순화된다는것에 의의가 있다. 

AWS와 같은 프로바이더들이 이러한 것들을 처리하기 때문이다. 더 작아진 통제로 책임이 작아지고, 엉망이 될 우려도 작아진다.


ECS

컨테이너 정의

검색하기에서 ECS를 검색해서 들어오면 편하다.

AWS ECS는 4가지 범주로 구성된다. 클러스터, 컨테이너, 태스크, 서비스

처음에 컨테이너 정의를 선택해야하는데 custom 컨테이너를 선택할거다.

구성을 눌러서 시작할건데, 자체 커스텀 컨테이너를 정의 할 수 있는 화면이 열린다.

컨테이너 이름을 정하고, 컨테이너의 기반이 되어야 하는 이미지를 정의해야한다. 이미지가 도커 허브에 있는 경우에는 레포지토리의 이름을 입력하면, ECS가 도커 허브에서 자동으로 찾는다. 그래서 나는 crowssnest/simple-node를 넣을거다.

혹시 다른 레지스트리를 쓴다면, 레지스트리 호스팅 도메인과 저장소 이름을 넣어야한다.

포트는 두개를 쓸 필요가 없다. 컨테이너 내부 포트는 항상 컨테이너 외부와 동일한 포트에 매핑되기 때문이다. 즉 80을 지정하면 컨테이너 내부 포트 80을 외부 포트 80에 자동으로 매핑한다.

 

고급컨테이너 구성에서 더 편집할 수 있다.

상태 확인은 AWS가 특정 명령을 실행하여 컨테이너가 잘 실행되는지 확인하는 설정이다.

환경은 컨테이너가 실행 될 때, 이 컨테이너에 대해 실행되어야 하는 디폴트 entrypoint 또는 명령을 오버라이드 할 수 있다.

환경 변수 부분에서 환경변수 키값 쌍을 간단하게 정의할 수 있다.

스토리지 및 로깅에서 볼륨은 -v 옵션과 같이 마운트 옵션을 구성할 수 있다.

로그 구성에서는 Cloudwatch를 사용하여 컨테이너에서 생성된 로그를 관리하고 저장한다.

이렇게만 설정하고 일단 업데이트를 누른다!


작업(태스크) 정의

그러면 이렇게 컨테이너 정의에서 내가 아까 설정한 이미지를 기반으로 컨테이너 정의가 생성된것을 볼 수 있다.

그리고 작업 정의를 봐야한다.

작업(테스크)은 기본적으로 애플리케이션의 블루프린트이다. AWS에 컨테이너를 시작하는 방법을 알릴 수 있다. 

docker run이 아니라 이를 실행하는 서버를 구성하는 방법이다. 그러니 작업에는 둘 이상의 컨테이너가 포함될 수 있다.

하나 이상의 컨테이너를 실행하는 하나의 리모트서버, 하나의 리모트 머신을 테스크라고 할 수 있다.

EC2로 컨테이너를 실행했던 것과 달리 직접 관리하는 것이 아니라, 컨테이너 실행하는 방법과 어떤 환경 설정해야하는지만 AWS에 알려주면 된다.

FARGATE를 사용해서 컨테이너를 시작할건데, 서버리스로 컨테이너를 구동하는데 필요하다.

컨테이너를 실행하는 EC2 인스턴스를 실행하지 않고, 대신에 컨테이너와 그 실행 설정을 저장하는것이다. 그리고 컨테이너에 요청이 있을 때 마다 컨테이너를 시작하고 요청을 처리한다음, 중지한다.

이는 컨테이너가 실행중인 시간에 대해서만 비용을 지불하고, 실행중이지 않을때에는 비용을 계산하지 않으니 비용적으로 효과적이다.


서비스 정의

그리고 작업정의가 완료되면, 다음을 눌러서 서비스 정의를 한다.

서비스는 이 작업(태스크), 즉 이 구성된 애플리케이션과 그를 포함하는 컨테이너를 실행하는 방법을 컨트롤 한다 .

로드밸런서를 추가할 수 있다. 그리고 로드밸런서를 생성하면 자동으로 보안그룹이 생성된다.


클러스터 구성

클러스터는 서비스가 실행되는 전체 네트워크이다.

지금의 구성은 하나의 컨테이너와 하나의 태스크가 있는 하나의 서비스지만, 다중 컨테이너 앱인 경우엔, 하나의 클러스터에 여러 컨테이너를 그룹화 할 수 있다. (서로 통신할 수 있음)


구성확인과 생성

클러스터를 확인하고 다음을 누르면 내가 설정한 옵션들을 확인할 수 있다.

 

 그리고 생성을 누르면, ECS서비스로 컨테이너가 실행된다. 체감상 2분정도 걸린거 같다.

서비스 보기를 누르면 내가 만든 환경 및 구성에 대한 정보를 볼 수 있다.

작업을 누르고 작업 아이디를 누르면 작업에 대해서 더 자세히 볼 수 있다.

퍼블릭 IP가 있는데 이제 내 도메인을 그 public IP에 매핑할 수 있다.

저 퍼블릭 IP의 주소를 복사하여 주소창에 붙여넣으면 노드앱이 잘 작동하는것을 볼 수 있다.

ECS를 활용하여 컨테이너를 구동하는데 성공했다.

JUNE .

20'S LIFE IN SYDNEY and BUSAN

    이미지 맵

    DevOps Study/Docker 다른 글

    이전 글

    다음 글