본문 바로가기

CICD/ECS

ECS CICD Automation - 3. ECS Cluster 구축

먼저, ECS 구조를 이해 할 필요가 있습니다.

 

ECS

 

가장 먼저, Task Definition을 알아 봅시다.

Task Definition은 ECR에서 어떤 도커 이미지를 가지고 컨테이너를 띄울 것인지, 포트 포워딩,

Network mode, 로그, 모니터링 등 실제 띄워지는 컨테이너 구성에 대한 정의를 하는 것으로 구성되어있습니다.

 

Service는 각각의 Task Definition을 통해 어떤 세팅의 컨테이너를 가지고 올 것인지 정하고,

배포 방식과, 로드벨런서 등 컨테이너가 시작되면 어떠한 방식으로 서비스할 것인지 정의하는 부분입니다.

 

마지막으로 ECS Cluster가 구성되며,

ECS Cluster는 기본적으로 EC2 서버들로 구성됩니다 (Fargate는 서버리스)

이렇게 생성된 클러스터 EC2 안에 띄워지는 컨테이너가 각각의 Service로 정의되는 것입니다.

 


자, 이제 그러면 ECR은 저번 포스트에서 구성해놨기 때문에, Task Definition 부터 구성해보도록 하겠습니다.

먼저 네트워크는 default 모드를 사용하도록 하겠습니다.

 

 

이제 컨테이너 설정을 할 때, 이전에 포스트에서 세팅해 놓은 ECR URL을 넣고, 메모리는 적정 수준에서 제한을 걸어주시면 됩니다.

포트는 호스트 포트를 동적으로 하기 위해 0으로 세팅해주시고, 컨테이너 포트는 실제 서비스 포트를 적어주시면 됩니다.

 

 


ECS의 정상적인 배포를 위해서는 동적포트로 구성해야하기 때문에 방화벽을 다음과 같이 세팅해줍니다.

 


 

이제 ECS Cluster를 구성하겠습니다. 서비스는 ECS Cluster 안에서 구성할 수 있기 때문에 먼저 클러스터를 구성해야합니다.

 


마지막으로 서비스를 구성해주도록 하겠습니다.

 

여기서 주의하셔야 할 부분이 최대 백분율 입니다.

 

배포를 할 때, 저 최대 백분율을 넘어서 배포를 할 수 없기 때문에 블루그린 배포등을 수행한다면,

 

같은 서비스의 컨테이너가 2개 초과로 뜰 수 없기 때문에 진행될 수 없습니다.

 

따라서 실제 운영을 하신다면, 저 부분에 대한 값을 잘... 정의해 주셔야 합니다.

 

 

로드벨런서의 경우 이전에 사용하던 타겟그룹을 그대로 사용해서 호스트헤더 기반으로 사용하겠습니다.

 

 

롤링 배포를 할 예정이고, 테스트이기 때문에 따로 오토스케일링은 설정하지 않겠습니다.

 

 

서비스가 정상적으로 생성 된 모습입니다.

 

 

타겟 그룹에서도 역시나 문제가 없으며,

 

 

도메인으로 접속시에도 정상적인 상태입니다.

 

 

이제 구성이 끝났으므로, 다음 포스트 부터는 젠킨스 Job을 작성하여 CICD 자동화를 구성해 보겠습니다.