본문 바로가기

Cloud/AWS

AWS - ECS Fargate 예제

Today Keys :  ECS , Fargate , container , aws , awsvpc , 파게이트 , 컨테이너 , cloud , 클라우드


이번 포스팅은 AWS에서 ECS에서 Fargate로 간단한 웹 페이지를 띄우는 예제입니다.


 

   먼저 Fargate를 앞단에서 사용 할 ELB를 생성합니다.
ALB와 NLB 모두 사용 가능하며, 예제에서는 ALB를 생성해둡니다.

ALB의 Targer Group입니다.

 

  ALB 설정 값입니다.  

 

  이제 Task Definitions(작업 정의)를 시작합니다.  

 Fargate로 생성할 예정이기 때문에 Fargate를 선택합니다.   

 

  작업 정의 이름을 'ZIGI-Task-Def'로 지정했습니다.

다른 AWS 서비스를 사용하지 않기 때문에 별도의 Task Role를 지정하지는 않습니다.

Fargate는 Network mode를  VPC의 네트워크를 그대로 사용하는 awsvpc만 지원합니다.   

   TASK를 실행하는 role은 기본 값으로 신규 생성으로 하였고, Task memory와 CPU는 최솟 값으로 설정합니다. 

      이제 Task 내에서 실행된 Container를 추가합니다.

Container 이름을 정하고, Base Image를 설정합니다. 

Container 내부에서 사용되는 서비스 포트를 설정합니다. 
(Fargate로 하는 경우에는 Container 포트만 설정합니다.)
  

   Entry point와 Command를 이용해서 웹에서 테스트 페이지를 띄울 수 있도록 합니다. 

  이제 설정을 마친 후, Launch를 하면 다음과 같이 정상적으로 생성된 것을 볼 수 있습니다.  

  이제 Cluster를 생성합니다.  

 

  Fargate를 사용하기 때문에 Networking only로 선택합니다.  

  Cluster에 대한 설정을 합니다.

클러스터 이름을 설정하고, VPC를 생성할지 선택합니다.

에제에서는 VPC를 사전에 만들어 두었기 때문에 Cluster 생성 시에 VPC를 만들지 않습니다.  

 Cluster가 만들어졌습니다.   

  이제 Cluster에서 서비스를 만들어서 ALB에 연결하겠습니다.  

 서비스에서 돌아갈 Task Definition(작업 정의)를 미리 생성해 둔 작업 정의로 선택합니다.

실행할 Task 수도 정할 수 있습니다.   

  서비스가 돌아가는 Subnet를 지정합니다.  

   이제 서비스를 연결할 ELB를 선택합니다. 

  LB에서 Fargate를 연결할 Target 그룹을 선택합니다. 

 

 

   이제 정상적으로 서비스 생성이 완료되었습니다. 

  서비스 상태를 보면 정상적으로 Running인 것을 확인할 수 있습니다.  

  ALB의 주소로 접속을 하면, Fargate로 배포하 서비스가 정상적으로 뜨는 것을 볼 수 있습니다.  

  Cluster 상태에서 보면, 1개의 Service와 1개의 Task가 동작 중인 것을 확인할 수 있습니다.  

   Task의 세부 정보를 다음과 같이 확인할 수도 있습니다. 

  이제 서비스에서 동작 중인 Task 수를 2로 늘려보겠습니다.  

 

  Task 수를 2로 늘리면 처음에는

Desired container에서만 2로 바뀌고 Running은 여전히 1입니다.  

  잠시 후, Pending 상태가 1로 변하고,   

   최종적으로는 Running 상태로 2개의 Task가 동작하는 것을 볼 수 있습니다. 

    Cluster에서 확인해보면, 1개의 서비스에서 2개의 Task가 동작하는 것을 확인할 수 있습니다.

 

                       용