(개인저장용) ECS Fargate + github action 배포

iwin1203·2022년 11월 20일
0

백엔드&DevOps

목록 보기
4/9

개념

  • ECS; Elastic Container Service: 컨테이너화된 애플리케이션의 손쉬운 배포, 관리 및 크기 조정을 지원하는 완전관리형 컨테이너 오케스트레이션 서비스

  • ECR; Elastic Container Registry: 애플리케이션 이미지 및 아티팩트를 안정적으로 배포할 수 있도록 뛰어난 성능 호스팅을 제공하는 완전관리형 컨테이너 레지스트리.

  • Fargate: 서버를 관리하지 않고도 애플리케이션 구축을 지원하는 서버리스 컴퓨팅 엔진. ECS, EKS와 호환

  • Github action: 깃허브에서 제공하는 CICD 플랫폼으로, 자동화된 빌드-테스트-배포 파이프라이닝이 가능.


과정

(0) 원하는 서버를 dockerfile로 생성 (포트 주의!)

github action

(1) ECS / ECR full access 가진 IAM 생성 후 secret key, access id 저장
(2) 레포에서 secrets로 위 credentials 저장
(3) 레포에서 github action for ecs 설정 후 aws.yml 파일에서 위 credentials 잡아주기

ECR

(4) ecr 레포 생성하고 aws.yml에서 잡아주기. => github에 push할 경우 ecr에 새로운 이미지 업로드하게 됨

ECS

(5) ecs 클러스터 생성. Fargate 사용.
(6) task definition 설정. 작업에 필요한 role 붙여주고, 컨테이너는 ecr 레포 내 image의 uri 복사해야함. 이때 포트 주의.
(7) ecs 클러스터에서 서비스 배포. (6)에서 생성한 task definition 붙여주고, alb, target group 설정.
(8) health check로 정상 배포 확인
(9) task definition에서 json 뽑아와 ./github/workflow/aws/task-definition.json으로 저장. (경로 설정 주의)

github action

(10) 그 외 aws.yml 파일 항목들 설정
(11) push 후 자동 배포 확인

0개의 댓글