본문 바로가기

CICD/ECS

(12)
ECS CICD Automation - 11. ECS Canary Deployment 이전 포스트에서 말씀 드렸듯이, 블루그린 배포 스크립트에서 Deploy CLI --deployment-config-name CodeDeployDefault.OneAtATime 옵션 부분을 수정해서 마지막 Deploy Script만 다음과 같이 고치면, Canary로 할 것인지 Linear로 할 것인지 정할 수 있습니다. withAWS(credentials:"$AWS_CREDENTIALS") { sh""" aws deploy create-deployment \ --application-name AppECS-${CLUSTER_NAME}-${SERVICE_NAME} \ --deployment-config-name ECSCanary10Percent1Minutes \ --deployment-group-name D..
ECS CICD Automation - 10. ECS Linear Deployment 사실 이전 블루그린 배포 스크립트에서 Deploy CLI --deployment-config-name CodeDeployDefault.OneAtATime 옵션 부분을 수정해서 마지막 Deploy Script만 다음과 같이 고치면, Canary로 할 것인지 Linear로 할 것인지 정할 수 있습니다. withAWS(credentials:"$AWS_CREDENTIALS") { sh""" aws deploy create-deployment \ --application-name AppECS-${CLUSTER_NAME}-${SERVICE_NAME} \ --deployment-config-name CodeDeployDefault.ECSLinear10PercentEvery1Minutes \ --deployment-g..
ECS CICD Automation - 9. ECS Linear, Canary Deployment Intro https://aws.amazon.com/ko/blogs/containers/aws-codedeploy-now-supports-linear-and-canary-deployments-for-amazon-ecs/ AWS CodeDeploy now supports linear and canary deployments for Amazon ECS | Amazon Web Services AWS CodeDeploy has extended blue/green deployment support for Elastic Container Service (Amazon ECS) to include canary and linear deployments for applications hosted on AWS Fargate or Am..
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..