ECS (9) 썸네일형 리스트형 ECS CICD Automation - 8. Jenkins Job (ECS Fargate Blue Green) 자 먼저 젠킨스 잡을 ECS Fargate Rolling에서 Copy하시고, 변수는 아래와 같이 설정해주시면 됩니다. 스크립트 또한 아래와 같이 입력해주신 후 저장하고 젠킨스 빌드를 해주도록 하겠습니다. pipeline { agent any stages { stage('Git Clone') { steps { script { try { git url: "https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/cb-test-api", branch: "master", credentialsId: "$GIT_CREDENTIALS_ID" sh "sudo rm -rf ./.git" env.cloneResult=true } catch (error) { print(e.. ECS CICD Automation - 8. ECS Fargate Blue/Green 생성 ECS EC2 Cluster 구성과 같이 먼저 타겟그룹을 하나 더 만들어 주도록 하겠습니다. 구성은 앞의 롤링에서 배포 옵션만 바꿔주신다고 생각해도 무방합니다. 자, 이제 서비스가 뜨는 모습을 볼 수 있습니다. Target Group에서도 정상적으로 헬스체크가 되고 url을 통해 들어왔을 때도 정상적으로 서비스가 수행되고 있는 모습입니다. (아까 롤링배포한 컨테이너 이미지여서 그래요) 자, 이제 다음 포스트에서 블루그린 배포 Jenkins Job을 만들고 수행함으로써 ECS 기본 배포 자동화에 대한 부분을 끝내보도록 하겠습니다. ECS CICD Automation - 7. Jenkins Job (ECS Fargate Rolling) 이전 ECS 배포 잡을 카피해서 만들어 줍시다. 변수는 아래와 같이 수정해줍니다. 그리고 스크립트를 아래와 같이 넣어주세요 pipeline { agent any stages { stage('Git Clone') { steps { script { try { git url: "https://git-codecommit.ap-northeast-2.amazonaws.com/v1/repos/cb-test-api", branch: "master", credentialsId: "$GIT_CREDENTIALS_ID" sh "sudo rm -rf ./.git" env.cloneResult=true } catch (error) { print(error) env.cloneResult=false currentBuild.resu.. ECS CICD Automation - 6. ECS Fargate 생성 구성방식은 ECS와 동일합니다. 먼저 Task Definition부터 만들어주도록 하겠습니다. 이제 ip로 전달하는 Target 그룹을 아래와 같이 구성하고 리스너를 만들어줍니다. 이제 클러스터를 구성해 주도록 하겠습니다. 클러스터가 구성이 끝나면 위의 Task Definition을 통해 롤링으로 Service를 구축하도록 하겠습니다. 이전에 사용하던 동적포트는 지워주시고, 9000포트를 추가시켜 주시면 됩니다. 서비스가 정상적으로 만들어지고 접속되는 것을 보실 수 있습니다. 다음 포스트에서는 이제, 해당 Fargate Rolling 배포 잡을 만들어보도록 하겠습니다. ECS CICD Automation - 5. Jenkins Job (Blue/Green) Blue Green 배포형태의 서비스를 만들어 보도록 하겠습니다. 먼저, CodeDeployRole에 다음 정책을 추가해줍니다. 이후 블루그린 배포는 2개의 타겟그룹을 가지고 있어야 하기 때문에, 한개 더 동일한 세팅의 타겟그룹을 만들어줍니다. ALB 리스너는 그대로 하나만 바라봐야합니다. 자 이제 Service를 만들어보도록 하겠습니다. 앞서 만든 두개의 타겟그룹을 선택해주면 되겠습니다. 만들어진 코드 디플로이 배포그룹에 들어가서 대기시간을 수정해줍니다. 그리고 젠킨스에서 롤링잡을 카피해서 만들어 주신 후 서비스 변수와 전체 스크립트만 바꿔서 진행해주시면 됩니다. 아래 코드에서 깃 repository와 task definition에 있는 container 이름은 꼭 맞춰주시기 바랍니다. pipeline.. 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 없이 사용하기 위해 위에 명령어를 쳐도 바로 적용되.. 이전 1 2 다음