본문 바로가기

CICD/ECS

ECS CICD Automation - 1. Intro

ECS CICD 자동화를 구성할 때, 기본 구조를 보도록 하겠습니다.

ECS CICD 기본 구조 흐름

개발자는 CodeCommit Repository에 Git Push를 하면서 소스 업데이트를 하고,

 

젠킨스에서 이 해당 Repository를 보고 있다가 Job Run을 수행하면서 Git clone 후 Build를 합니다.

(만약 Flask와 같이 Jar 빌드등이 필요하지 않은 경우 Build 부분은 생략됩니다.)

 

이후 Build된 Jar 파일과 해당 Jar파일을 수행할 수 있게끔 세팅된 Base Image를 가지고 도커파일을 만들고,

Jar파일을 해당 도커이미지에 Add하여 도커 빌드를 한 후, ECR에 Push하게 됩니다.

 

컨테이너 이미지 버전에 맞춰 Task Definition을 만들어주고,

블루그린 배포를 하게 된다면, CodeDeploy가 배포를 하기 위해 어떤 수행을 할 것인지 정의해주는

appspec.yaml을 버킷 구조를 만들어 S3에 업로드해야 합니다.

그렇지 않고 롤링배포를 할 경우에는 컨테이너 이미지 URL 버전을 맞춰 수정해 준 후 Service Update에 대한 CLI를 수행하면 됩니다.

 

정상적으로 업로드 되었다면, AWS CLI를 통해 Create Deployment를 수행하여 CodeDeploy를 통해 EC2에 배포합니다.

위의 AWS CLI를 통해 만들어진 Deployment ID 값을 가지고,

AWS CLI Get Deployment를 통해 젠킨스에서 CodeDeploy의 배포 성공 여부까지 체크하게 합니다.

 

ECS의 경우 ECS 자체 구성에 대한 이해가 많이 필요합니다.

또한 도커파일 작성이나 컨테이너의 아주 기초적인 부분은 다룰줄 알아야 구성하는데 큰 어려움이 없습니다.

 

다음 포스트에서 ECR을 세팅하면서 ECS CICD 자동화를 구성해보도록 하겠습니다.