devops

Docker이미지를 ECS를 통해 배포해보기(2)

하리하링웹 2024. 5. 16. 21:59

이전 내용은1편을 참고하자

https://jjongsk.tistory.com/entry/Docker%EC%9D%B4%EB%AF%B8%EC%A7%80%EB%A5%BC-ECS%EB%A5%BC-%ED%86%B5%ED%95%B4-%EB%B0%B0%ED%8F%AC%ED%95%B4%EB%B3%B4%EA%B8%B0

 

Docker이미지를 ECS를 통해 배포해보기(1)

ECS는 쿠버네티스와 같은 컨테이너 이미지 오케스트레이션 도구이다. 이를 사용하여 Docker이미지를 ECS에 배포하는 과정을 실습해보겠다.1. 테스트용 노드 서버 만들기여기서는 fastify를 사용한

jjongsk.tistory.com

 

5. Load balancer 생성

이 설정을 통해 밖에서 오는 HTTP 요청을 application 서버로 보내줄 수 있다.

EC2의 로드 밸런서 탭으로 이동해준다.

 

 

로드 밸런서 페이지에서 create 버튼을 누르고 application load balancer에서 create를 클릭해준다.

 

적절한 로드 밸런서 이름을 적은 뒤 위에서 생성한 VPC를 사용해 네트워크를 매핑해준다.

 

이제 target group을 추가해줘야 한다. 이는 로드밸런서로 온 요청을 특정 타겟으로 라우팅해주는 설정이다.

 

create target group을 누른다.

 

EC2를 사용하는 경우에는 인스턴스를 추가하면 되지만 지금은 ECS Fargate를 사용할 것이기 때문에 target group을 ip로 설정해줘야한다.

 

이후 대상 등록은 생략하고 create를 눌러준다.

 

다시 로드밸런서 생성 페이지로 와서 타겟 그룹을 추가해준뒤 아래로 내려가 create를 선택해준다.

 

정상적으로 로드밸런서가 생성된 것을 확인할 수 있다.

 

6.ECS 설정하기

Task definition 생성

먼저 ecs로 들어가 task definition을 생성 해줘야한다.

task definition은 container image의 실행 방식을 설정하는 과정이다.

 

생성 버튼을 누르고 아래와 같이 설정해준다.

 

  1. serverless로 동작하게 만들것이기 때문에 Fargate를 선택해준다. 만약 EC2를 사용하고 싶다면 EC2 instances 옵션을 선택한다.
  2. Docker image 빌드시 설정하였던 OS architecture를 선택해준다. 이 경우에는 m1 mac을 사용하고 있으며 이미지 빌드 시 별다른 platform 설정을 하지 않았기 때문에 arm64 architecture를 선택해준다.
  3. task role에 IAM role을 선택해준다.

 

아래쪽에서 Container 설정쪽에도 적절한 이름과 사용할 ECR의 Image URI를 태그까지 넣어준뒤 생성버튼을 누른다.

이 때 포트 매핑 설정에서의 container port 서버에서 사용하는 포트 번호인 3000번으로 설정해야하는것을 주의해야한다.

ECS Cluster 생성

이제 준비가 끝났으니 cluster를 생성할 차례이다.

cluster 페이지로 이동해서 생성버튼을 눌러준다.

 

 

infrastructure는 fargate로 생성해준다. 프로젝트의 구조에 따라 설정하면 된다.

이후 create 버튼을 누르고 생성이 완료되는것을 기다린다.

ECS 서비스 생성

클러스터 생성이 완료되었으면 해당 클러스터로 들어가 서비스를 만들어준다. 서비스 탭에서 create버튼을 누른다.

다른 설정들은 default 값으로 놔두고 task definition을 추가해준다.

 

VPC도 아까 생성한 VPC로 추가해준다.

 

Load Balancer도 추가해준다.

 

이제 create 버튼을 누른 뒤 생성되는것을 기다려준다.

 

 

 

확인

이제 ECS 설정이 완료되었다. 잘 동작하는지 확인해보자

EC2의 로드 밸런서로 이동하여 연결된 로드 밸런서로 들어간 뒤 DNS를 복사하여 주소창에 입력해준다.

 

 

설정을 잘못한 부분이 없다면 잘 동작하는것을 확인할 수 있다.

 

만약 잘 동작하지 않는다면 ECS의 service 콘솔에 들어가서 state가 complete인지 확인해 보고 문제가 있다면 로그를 확인하거나하여 설정을 변경해주어야 한다.