배포하실 서비스가 Dockerfile에 준비되어 있다는 전제에서 설명드리겠습니다.
순서
- ECR 레포 docker 이미지 push
- ECS 태스크 정의
- ECS 클러스터 생성
- 클러스터 서비스 생성
ECS 이란?
Amazon Elastic Container Service(Amazon ECS)는 완전관리형 컨테이너 오케스트레이션 서비스입니다. 기본적으로 Amazon Route 53, Secrets Manager, AWS Identity and Access Management(IAM), Amazon CloudWatch 등의 다른 서비스와 통합을 통해 컨테이너 배포 및 확장을 위한 익숙한 환경을 제공할 수 있습니다. 다른 AWS 서비스와의 신속한 통합을 통해 ECS에 새로운 기능을 추가할 수도 있습니다. ECS를 통해 애플리케이션에서 Amazon EC2 및 AWS Fargate를 스팟 및 온디맨드 요금 옵션과 조합하여 유연하게 사용할 수도 있습니다.
ECR 이란?
AWS ECR (Amazon Elastic Container Registry)는 Amazon Web Services가 제공하는 Docker 컨테이너 이미지를 저장하고 관리할 수 있는 서비스입니다. 이 서비스를 사용하여 개발자는 Docker 이미지를 안전하게 업로드, 저장, 관리 및 배포할 수 있습니다. ECR은 AWS 클라우드의 다른 서비스와 통합되어 컨테이너화된 애플리케이션의 빌드, 저장 및 배포 프로세스를 간소화합니다.
1. ECR 레포 docker 이미지 push
1. AWS ECR에 접속해서 원하는 레포 이름으로 레포지토리를 생성합니다.
2. 레포를 생성했다면 푸시 명령 보기를 클릭해서 배포하려는 프로젝트 파일에서 순차적으로 명령어를 실행시켜서 푸시를 진행합니다.(푸시 명령 1~4번 실행)
주의할 점, 배포하는 ECS가 Linux이기 때문에 Linux 환경에서 실행되는 docker 이미지를 push 해야 합니다.
추후에 ECS 서비스를 생성할 때 계속 서킷 브레이커가 발생한다면 docker 이미지를 먼저 의심해 보시면 됩니다.
(저 같은 경우 docker 이미지가 제 MAC에서는 잘 동작해서 ECR에 올렸는데 ECS는 Linux 계열이라서 계속적으로 ECS 서비스 생성에 문제가 발생해서 오랜 삽질을 했습니다,, 저 같은 분들이 없기를,,)
2. ECS 태스크 정의
- 태스크 정의 패밀리 : 원하시는 이름 작성
- 시작 유형 : AWS Fargate
- OS, 아키텍처, 네트워크 모드 : Linux/X86_64
- 태스크 크기 : 1 vCPU, 3GB
- 태스크 역할 : ecsTaskExecutionRole
- 태스크 실행 역할 : ecsTaskExecutionRole
컨테이너
- 이미지 URI : ECR 이미지 URI (주의, ECR 레포 URI 아닙니다. 아래 이미지 참고)
- 컨테이너 포트 : 컨테이너에서 사용하는 포트 작성
- 환경변수 파일 추가 : S3에 환경 변수 파일 업로드해서 객체 ARN 값 작성(옵션)
- 로깅을 선택하면 ecsTaskExecutionRole 값에 CloudWatchFullAccess 권한 추가 필요(옵션, 아래 이미지 참고)
나머지 설정은 기본 설정으로 진행
3. ECS 클러스터 생성
- 클러스터 이름 작성
- AWS Fargate 선택
나머지 설정은 기본 설정값으로 진행
4. 클러스터 서비스 생성
환경
- 컴퓨팅 옵션 : 시작 유형
- 시작 유형 : FARGATE
배포 구성
- 애플리케이션 유형 : 서비스
- 패밀리 : 앞에서 정의한 태스크 선택
네트워킹
- 사용하는 VPC 있으면 선택
로드 벨런싱
- 로드 벨런서 연결
- 기존 대상 그룹을 연결할 때는 대상 유형을 “IP 주소”로 선택해서 생성한 대상 그룹 연결 가능(Fargate 연결하는 경우)
ECS 서비스 상태가 활성이면 배포 성공!
서비스에 들어가면 상태 및 지표와 연결된 로드 벨런서 확인이 가능하고
테스크에 들어가면 태스크 구성(IP등)과 로그를 확인할 수 있습니다.
'AWS' 카테고리의 다른 글
S3 객체 대량 삭제 시 복구 방법 (2) | 2023.11.03 |
---|---|
AWS를 이용한 SSL 적용하기 (0) | 2023.01.08 |