앞서 두 포스팅에서
VPC 세팅을 하고
Code Pipeline으로 빌드까지 해줬다.
이제 이렇게 빌드 성공한 이미지는 ECR에 저장되어있다.
이제 이 이미지를 ECS를 이용하여 배포해본다.
1. 태스크 정의 생성
AWS ECS (Amazon Elastic Container Service)에서 "태스크"는 컨테이너를 실행하는 단위입니다.
좀 더 구체적으로 설명하면, 태스크는 하나 이상의 컨테이너 인스턴스의 그룹으로,
ECS에서 실행하는 작업의 기본적인 단위입니다.
새 태스크 정의 구성에서 아래와 같이 설정하였다.
시작 유형은 EC2 인스턴스
네트워크 모드는 awsvpc
아키텍처는 ARM64
태스크 크기는 2 vCPU, 3 GM 메모리
그 후 ECR에 latest 태그가 달린 이미지 URL을 필수 컨테이너로 지정하고
HTTP 프로토콜 포트 매핑 후 태스크를 생성한다.
2. 클러스터 생성
AWS ECS에서 클러스터(Cluster)는 ECS에서 태스크(Task)를 실행하기 위해 필요한 리소스(예: EC2 인스턴스 또는 AWS Fargate 인프라)를 논리적으로 그룹화한 것입니다.
클러스터는 태스크와 서비스를 배포하고 관리하는 데 사용되는 리소스의 모음입니다.
인프라는 EC2 t4g.micro에 맞게 설정하였다.
VPC 와 서브넷, 보안그룹을 설정 해준다.
3. ALB(Application Load Balancer) 생성
네트워크 매핑을 퍼블릭 서브넷으로 설정해준다.
대상 그룹이 없기 때문에 '대상 그룹 생성'으로 대상 그룹을 하나 생성해준다.
(그 과정은 특별한게 없어서 생략하겠다.)
단, 인스턴스가 아닌 IP 주소로 생성해준다!!
추가로 HTTPS까지 등록해준다.
생성 버튼을 눌러 ALB 생성을 마친다.
4. 클러스터 서비스 생성
이제 생성된 클러스터에 서비스를 붙인다.
배포 구성 - 좀 전에 생성한 태스크
로드밸런싱도 연결해준다.
그 후 생성 버튼을 클릭하여 서비스를 생성한다.
5. 확인
정상적으로 연결이 되면 아래와 같이 나타난다.
로드밸런서 보기를 클릭하고
DNS 이름을 주소창에 붙여넣기 하면 실행중인 것을 확인할 수 있다.
6. Code Pipeline 연결