블루/그린 배포를 통한 CodeDeploy - Amazon Elastic Container Service

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

블루/그린 배포를 통한 CodeDeploy

블루/그린 배포 유형은 에서 제어하는 블루/그린 배포 모델을 사용합니다. CodeDeploy 이 배포 유형을 사용하면 프로덕션 트래픽을 전송하기 전에 서비스의 새로운 배포를 확인합니다. 자세한 내용은 사용 설명서의 내용을 참조하십시오 CodeDeploy.AWS CodeDeploy

블루/그린 배포 중에 트래픽이 이동할 수 있는 세 가지 방법이 있습니다.

  • 카나리아 — 트래픽이 2단계씩 이동합니다. 나머지 트래픽이 두 번째 증분으로 이동하기 전에 첫 번째 증분에서 업데이트된 작업 세트로 이동할 트래픽 비율(%)과 간격(분)을 지정하는 사전 정의된 Canary 옵션 중에서 선택할 수 있습니다.

  • 선형 — 트래픽은 각 증가분 사이의 시간 (분) 이 같도록 균등한 간격으로 이동합니다. 각 증분에서 이동되는 트래픽 비율(%)과 각 증분 간의 시간(분)을 지정하는 사전 정의된 Linear 옵션에서 선택할 수 있습니다.

  • A ll-at-once — 모든 트래픽이 원래 작업 세트에서 업데이트된 작업 세트로 한꺼번에 이동합니다.

서비스가 블루/그린 배포 CodeDeploy 유형을 사용할 때 Amazon ECS에서 사용하는 구성 요소는 다음과 같습니다.

CodeDeploy 애플리케이션

CodeDeploy 리소스 모음. 이것은 하나 이상의 배포 그룹으로 구성됩니다.

CodeDeploy 배포 그룹

배포 설정. 이것은 다음과 같은 요소로 구성됩니다.

  • Amazon ECS 클러스터와 서비스

  • 로드 밸런서 대상 그룹 및 리스너 정보

  • 배포 롤백 전략

  • 트래픽 다시 라우팅 설정

  • 원래 개정 종료 설정

  • 배포 구성

  • CloudWatch 배포를 중지하도록 설정할 수 있는 알람 구성

  • 알림용 SNS 또는 CloudWatch 이벤트 설정

자세한 정보는 AWS CodeDeploy 사용 설명서배포 그룹으로 작업을 참조하세요.

CodeDeploy 배포 구성

배포 중에 프로덕션 트래픽을 대체 작업 세트로 CodeDeploy 라우팅하는 방법을 지정합니다. 다음과 같은 사전 정의된 Linear 및 Canary 배포 구성을 사용할 수 있습니다. 사용자 정의 Linear 및 Canary 배포도 생성할 수 있습니다. 자세한 정보는 AWS CodeDeploy 사용 설명서배포 구성으로 작업을 참조하세요.

  • CodeDeployDefault.ECS AllAtOnce: 모든 트래픽을 업데이트된 Amazon ECS 컨테이너로 한 번에 이동합니다.

  • CodeDeployDefault.ECS 선형 PercentEvery 10분: 모든 트래픽이 전환될 때까지 1분마다 트래픽의 10% 를 이동합니다.

  • CodeDeployDefault.ECS 선형 PercentEvery 10분: 모든 트래픽이 전환될 때까지 3분마다 트래픽의 10% 를 이동합니다.

  • CodeDeployDefault.EC 카나리아 10% 5분: 첫 번째 증분에서 트래픽의 10% 를 이동합니다. 나머지 90%는 5분 이후 배포됩니다.

  • CodeDeployDefault.EC 카나리아 10퍼센트15분: 첫 번째 증분에서 트래픽의 10% 를 이동합니다. 나머지 90%는 15분 이후 배포됩니다.

개정

수정은 애플리케이션 사양 파일 (파일) 입니다. CodeDeploy AppSpec AppSpec 파일에서 작업 정의의 전체 ARN과 새 배포가 생성될 때 트래픽이 라우팅되는 대체 작업 세트의 컨테이너 및 포트를 지정합니다. 컨테이너 이름은 태스크 정의에서 참조되는 컨테이너 이름 중 하나여야 합니다. 서비스 정의에서 네트워크 구성 또는 플랫폼 버전을 업데이트한 경우 파일에 해당 세부 정보도 지정해야 합니다. AppSpec 배포 수명 주기 이벤트 중에 실행할 Lambda 함수를 지정할 수도 있습니다. Lambda 함수를 사용하면 배포 중에 테스트를 실행하고 지표를 반환할 수 있습니다. 자세한 내용은 AWS CodeDeploy 사용 설명서의 AppSpec 파일 참조를 참조하십시오.

블루/그린 배포 고려 사항

블루/그린 배포 유형 사용 시 고려할 몇 가지 사항들은 다음과 같습니다.

  • 블루/그린 배포 유형을 사용하는 Amazon ECS 서비스가 맨 처음 생성되면 Amazon ECS 작업 세트가 생성됩니다.

  • Application Load Balancer 또는 Network Load Balancer를 사용하도록 서비스를 구성해야 합니다. 로드 밸런서의 요구 사항들은 다음과 같습니다.

    • 프로덕션 트래픽을 라우팅하는 데 사용되는 로드 밸런서에 프로덕션 리스너를 추가해야 합니다.

    • 테스트 트래픽을 라우팅하는 데 사용되는 로드 밸런서에는 테스트 리스너(선택 사항)를 추가해야 합니다. 테스트 리스너를 지정하는 경우 배포 중에 테스트 트래픽을 대체 작업 세트로 CodeDeploy 라우팅합니다.

    • 프로덕션 및 테스트 리스너는 모두 동일한 로드 밸런서에 속해야 합니다.

    • 로드 밸런서에 대한 대상 그룹을 정의해야 합니다. 대상 그룹은 트래픽을 프로덕션 리스너를 통해 서비스의 원래 작업 세트로 라우팅합니다.

    • Network Load Balancer를 사용하는 경우 CodeDeployDefault.ECSAllAtOnce 배포 구성만이 지원됩니다.

  • 서비스 Auto Scaling 및 블루/그린 배포 유형을 사용하도록 구성된 서비스의 경우 배포 중에 Auto Scaling이 차단되지 않지만 일부 상황에서는 배포가 실패할 수 있습니다. 이 동작에 대한 자세한 설명은 아래와 같습니다.

    • 서비스가 확장 중이고 배포가 시작되면 녹색 작업 세트가 생성되고 CodeDeploy 녹색 작업 세트가 정상 상태에 도달할 때까지 최대 1시간이 기다리며 정상 상태가 될 때까지 트래픽이 이동하지 않습니다.

    • 서비스가 블루/그린 배포 중이고 조정 이벤트가 발생하면 트래픽은 5분 동안 계속 이동합니다. 5분 이내에 서비스가 안정된 상태에 도달하지 못하면 배포를 중지하고 실패로 표시합니다. CodeDeploy

    • 서비스가 블루/그린 배포 중이고 크기 조정 이벤트가 발생하면 원하는 태스크 수가 예기치 않은 값으로 설정될 수 있습니다. 이는 실행 중인 태스크 수를 현재 용량(원하는 태스크 수 계산에 사용되는 적절한 태스크 수의 2배)으로 간주하는 Auto Scaling에 의해 발생합니다.

  • Fargate 시작 유형이나 CODE_DEPLOY 배포 컨트롤러 유형을 사용하는 태스크는 DAEMON 일정 전략을 지원하지 않습니다.

  • 처음에 CodeDeploy 응용 프로그램 및 배포 그룹을 만들 때는 다음을 지정해야 합니다.

    • 로드 밸런서에 대해 두 개의 대상 그룹을 정의해야 합니다. 하나의 대상 그룹은 Amazon ECS 서비스가 생성될 때 로드 밸런서에 대해 정의된 초기 대상 그룹이어야 합니다. 두 번째 대상 그룹의 유일한 요구 사항은 서비스가 사용하는 것과 다른 로드 밸런서에 연결할 수 없다는 것입니다.

  • Amazon ECS 서비스용 CodeDeploy 배포를 생성할 때 배포에 대체 작업 세트 (또는 그린 작업 세트) 를 CodeDeploy 생성합니다. 로드 밸런서에 테스트 리스너를 추가한 경우 테스트 트래픽을 대체 작업 세트로 CodeDeploy 라우팅합니다. 이때 모든 확인 테스트를 실행할 수 있습니다. 그런 다음, CodeDeploy는 프로덕션 트래픽을 원래 작업 세트에서 배포 그룹에 대한 트래픽 다시 라우팅 설정에 따라 교체 작업 세트로 다시 라우팅합니다.

블루/그린 배포에 필요한 IAM 권한

Amazon ECS 블루/그린 배포는 Amazon ECS와 API의 조합을 통해 가능합니다. CodeDeploy 사용자가 AWS Management Console 또는 SDK에서 Amazon ECS 블루/그린 배포를 사용하려면 먼저 이러한 서비스에 대한 적절한 권한이 있어야 합니다. AWS CLI

Amazon ECS는 서비스 생성 및 업데이트를 위한 표준 IAM 권한 외에 다음과 같은 권한을 필요로 합니다. 이러한 권한은 AmazonECS_FullAccess IAM 정책에 추가되었습니다. 자세한 설명은 AmazonECS_ FullAccess 섹션을 참조하세요.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "codedeploy:CreateApplication", "codedeploy:CreateDeployment", "codedeploy:CreateDeploymentGroup", "codedeploy:GetApplication", "codedeploy:GetDeployment", "codedeploy:GetDeploymentGroup", "codedeploy:ListApplications", "codedeploy:ListDeploymentGroups", "codedeploy:ListDeployments", "codedeploy:StopDeployment", "codedeploy:GetDeploymentTarget", "codedeploy:ListDeploymentTargets", "codedeploy:GetDeploymentConfig", "codedeploy:GetApplicationRevision", "codedeploy:RegisterApplicationRevision", "codedeploy:BatchGetApplicationRevisions", "codedeploy:BatchGetDeploymentGroups", "codedeploy:BatchGetDeployments", "codedeploy:BatchGetApplications", "codedeploy:ListApplicationRevisions", "codedeploy:ListDeploymentConfigs", "codedeploy:ContinueDeployment", "sns:ListTopics", "cloudwatch:DescribeAlarms", "lambda:ListFunctions" ], "Resource": ["*"] } ] }
참고

작업과 서비스를 실행하는 데 필요한 표준 Amazon ECS 권한 이외에, 사용자는 작업에 대한 IAM 역할을 사용하기 위한 iam:PassRole 권한도 필요합니다.

CodeDeploy Amazon ECS API를 호출하고, Elastic Load Balancing을 수정하고, Lambda 함수를 호출하고, 경보를 CloudWatch 설명할 수 있는 권한과 사용자를 대신하여 서비스의 원하는 수를 수정할 수 있는 권한이 필요합니다. 블루/그린 배포 유형을 사용하는 Amazon ECS 서비스를 생성하기 전에 IAM 역할(ecsCodeDeployRole)을 생성해야 합니다. 자세한 설명은 아마존 ECS CodeDeploy IAM 역할 섹션을 참조하세요.

서비스 생성 예제서비스 업데이트 예제 IAM 정책 예제는 사용자가 AWS Management Console에서 Amazon ECS 블루/그린 배포를 사용하는 데 필요한 권한을 보여 줍니다.