본문 바로가기

CICD/ECS

(12)
ECS CICD Automation - 4. Jenkins Job (Rolling) 이제 ECS의 배포 순서를 다시 간단하게 순서를 나열하면 다음과 같습니다. 1. Git Clone 2. Maven Build & S3 Upload (사실 안 해도 됨 그래서 생략 할 예정) 3. Create Docker file & Docker Build -> ECR Push 4. Create Task Definition (Modifiy ECR URL Version) & Update Service (Modify Task Definition Version) 젠킨스 세팅에 관한 부분은 EC2 CICD부터 수행해오며 모두 되어 있기 때문에, 해당 포스트만 보실 경우 앞 포스트들을 보며 세팅을 하시거나 아니면 알아서 잘 세팅한 후 진행하시면 됩니다. 는 아니고 ecs에서 아래와 같이 CLI를 수행해야하기 때문에..
ECS CICD Automation - 3. ECS Cluster 구축 먼저, ECS 구조를 이해 할 필요가 있습니다. 가장 먼저, Task Definition을 알아 봅시다. Task Definition은 ECR에서 어떤 도커 이미지를 가지고 컨테이너를 띄울 것인지, 포트 포워딩, Network mode, 로그, 모니터링 등 실제 띄워지는 컨테이너 구성에 대한 정의를 하는 것으로 구성되어있습니다. Service는 각각의 Task Definition을 통해 어떤 세팅의 컨테이너를 가지고 올 것인지 정하고, 배포 방식과, 로드벨런서 등 컨테이너가 시작되면 어떠한 방식으로 서비스할 것인지 정의하는 부분입니다. 마지막으로 ECS Cluster가 구성되며, ECS Cluster는 기본적으로 EC2 서버들로 구성됩니다 (Fargate는 서버리스) 이렇게 생성된 클러스터 EC2 안에 ..
ECS CICD Automation - 2. Docker 설치 및 Docker Image 생성 EC2에서 세팅된 젠킨스 서버를 그대로 사용하도록 하겠습니다. 먼저, 젠킨스 서버에서 ECR에 대해 pull push를 모두 할 수 있어야 하기 때문에, 해당 IAM Role을 추가해주겠습니다. 물론 더 상세하게 쪼개서 Policy를 만든 다음, 권한을 주시는게 가장 좋습니다. 이제 젠킨스 서버에서 다음 쉘 스크립트를 수행해서 도커를 깔아주도록 하겠습니다. sudo amazon-linux-extras install -y epel sudo amazon-linux-extras install -y docker sudo service docker start sudo usermod -aG docker $USER docker info docker 명령어를 sudo 없이 사용하기 위해 위에 명령어를 쳐도 바로 적용되..
ECS CICD Automation - 1. Intro 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을 만들어주고, 블루그린 배포를 하게 된다면, CodeD..