앞서 두 포스팅에서
VPC 세팅을 하고
[Loatodo] AWS로 스프링 CI/CD 구축하기 (1) VPC 설정
기존 Elastic Beanstalk으로 배포중이던 Spring boot 서버 환경에서뭐하나 잘못건드렸는지 새로운 버전 배포시 CPU가 100% 찍히는 현상을 발견했다. 기존에도 물론 배포할 때 CPU가 높게 치긴 했지만 저정
repeater2487.tistory.com
Code Pipeline으로 빌드까지 해줬다.
[Loatodo] AWS로 스프링 CI/CD 구축하기 (2) Code Pipeline 생성
지난 포스팅에서 Spring CI/CD 구축의 첫 단계로 VPC 설정을 하였다. [Loatodo] AWS로 스프링 CI/CD 구축하기 (1) VPC 설정기존 Elastic Beanstalk으로 배포중이던 Spring boot 서버 환경에서뭐하나 잘못건드렸는지
repeater2487.tistory.com
이제 이렇게 빌드 성공한 이미지는 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 연결