dev_eun

[Spring Boot 배포 with AWS ECS] ③ ECS 태스크 정의, 클러스터, 서비스, 태스크 설정 본문

Cloud/AWS

[Spring Boot 배포 with AWS ECS] ③ ECS 태스크 정의, 클러스터, 서비스, 태스크 설정

_eun 2024. 1. 30. 14:49

Spring Boot 배포 with AWS ECS 시리즈

1. Dockerfile 작성, Docker 이미지 빌드, ECR 업로드

2. AWS 로드 밸런서(Load Balancer) 및 대상 그룹(Target Group) 설정

3. (현재글) ECS 태스크 정의, 클러스터, 서비스, 태스크 설정

4. 가비아 도메인을 컨테이너로 연결 및 HTTPS 적용

5. Github Action을 통해 CD 구축하기

 

 

안녕하세요.

AWS의 ECS 서비스를 처음 써보면서 삽질을 오래 해서 지친 사람입니다 🫠

저같은 사람들이 한 명쯤 있을까 하여 시리즈를 작성하게 되었습니다. 혹시 잘못된 부분이나 추가하면 좋을 내용 등 피드백이 있다면 코멘트 주시면 감사합니다.

 


 

앞 포스트에서 ECS 구성을 위한 준비를 마쳤습니다.

이제 드디어 컨테이너를 띄워볼 차례입니다.

 

Task Execution Role 설정

태스크 정의를 하기 전에, 이 태스크가 실행할 수 있도록 역할 권한을 부여해주어야 합니다.

AWS 콘솔에서 IAM 서비스의 "역할"로 접속합니다. 역할 생성을 눌러주세요.

 

사용 사례에서 Elastic Container Service를 선택하시고 사용 사례로 Elastic Container Service Task 선택하세요.

 

다음으로 가셔서 권한으로 AmazonECSTaskExecutionRolePolicy 를 선택해주시면 됩니다.

 

이름을 지정하시고 생성하시면, 바로 확인하실 수 있어요.

 

Task Definition

그 다음 Task Definition을 생성해줍니다.

태스크 정의는 애플리케이션을 구성하는 매개변수와 하나 이상의 컨테이너를 설명하는 JSON 형식의 텍스트 파일입니다.
컨테이너 이미지, 리소스, 포트 등 태스트 실행을 위한 정보를 설정할 수 있어요. 태스크 정의가 되어야 이걸 참조해서 태스크 또는 서비스를 실행할 수 있습니다.

 

AWS 콘솔에서 ECS 서비스에 접속합니다. 왼쪽 메뉴에서 "태스크 정의"에 접속합니다.

 

태스크 정의 패밀리 이름을 입력해주세요.

인프라 요구 사항에서 Fargete 혹은 EC2 인스턴스 중 사용할 유형을 선택합니다. 저는 Fargete를 사용할 예정입니다.

그리고 태스크 실행 역할에서 "새 역할 생성"을 선택해주세요.

 

여기서 태스크 역할을 아까 생성해던 taskExecutionRole을 지정해주시면 됩니다.

 

 

컨테이너 섹션에서 정보를 입력합니다.

이름 : 본인이 알아볼 수 있는 이름

이미지 URI : ECR에 업로드했던 이미지의 세부 정보에서 확인할 수 있어요.

컨테이너 포트 : 서버 실행 시 설정해준 포트를 설정합니다. 저는 8080이에요.

 

 

 

Cluster 생성

AWS 콘솔에서 ECS 서비스에 접속합니다.

"클러스터 생성" 버튼을 통해 클러스터를 생성해줍니다.

 

클러스터 이름을 설정하고, 인프라에서 자신이 원하는 자원을 선택해주세요.

저는 Fargate를 선택하였습니다.

 

 

생성한 클러스터가 활성상태가 되면, 서비스를 생성해줍니다.

 

 

환경은 그대로 두시고, 배포 구성에서 패밀리와 서비스 이름을 설정해줍니다.

패밀리는 앞서 정의했던 태스크 정의 패밀리를 선택해줍니다.

 

네트워킹 섹션에서 VPC가 적절하게 선택되었는지 확인하시고, 보안 그룹을 설정해줍니다.

새 보안 그룹 생성을 선택하시고 이름과 설명을 작성해주세요.

인바운드 규칙에 사용자 지정 TCP, 포트를 8080(서버 실행 시 세팅한 값), 소스를 이전에 만들었던 보안 그룹을 선택해줍니다. 

 

로드 밸런싱 섹션에서 ALB 유형을 선택합니다.

기존 로드 밸런서 사용 선택 후, 앞서 생성했던 로드 밸런서를 선택해줍니다.

리스너와 대상 그룹도 이전에 생성했던 것을 선택해줍니다.

 

 

이렇게 서비스를 생성할게요. 서비스가 생성되면 태스크가 자동으로 배포됩니다.

서비스 세부 상태에서 태스크의 상태를 확인할 수 있어요.

 

서비스가 안정 상태가 되었다면, 실제 접속해서 테스트할 수 있어요.

만들었던 로드밸런서의 DNS 이름으로 접속해보면, 정상적으로 동작하는 것을 확인할 수 있습니다.

 

728x90