Amazon ECS에서 호스팅되는 서비스에 대해 블루/그린 배포를 수행하려면 어떻게 해야 하나요?

최종 업데이트 날짜: 2021년 1월 22일

Amazon Elastic Container Service(Amazon ECS)에서 호스팅되는 서비스에 대해 블루/그린 배포를 수행하려고 합니다.

간략한 설명

블루/그린 배포를 수행하는 단계를 따르기 전에 다음 사항이 있는지 확인합니다.

해결 방법

AWS Identity and Access Management(IAM) 서비스 역할 생성

Amazon ECS에서 AWS CodeDeploy에 블루/그린 배포 유형을 사용하려면 먼저 CodeDeploy 서비스에 사용자를 대신하여 Amazon ECS 서비스를 업데이트할 수 있는 권한을 부여해야 합니다.

1.    IAM 콘솔을 엽니다.

2.    탐색 창에서 [Roles]를 선택합니다.

3.    [역할 생성(Create role)]을 선택합니다.

4.    신뢰할 수 있는 엔터티 유형 선택 섹션에서 AWS 서비스를 선택한 다음 CodeDeploy를 선택합니다.

5.    사용 사례 선택 섹션에서 CodeDeploy - ECS를 선택한 다음 다음: 권한을 선택합니다.

참고: 기본 AWSCodeDeployforECS 정책을 유지하세요. 이 정책에는 CodeDeploy가 Amazon ECS 및 기타 서비스와 올바르게 상호 작용하는 데 필요한 권한이 포함되어 있습니다.

6.    [다음: 태그]를 선택합니다.

7.    (선택 사항) 태그 이름을 입력한 후 다음: 검토를 선택합니다.

8.    역할 이름ecsCodeDeployRole을 입력합니다.

9.    역할 생성을 선택합니다.

Application Load Balancer 생성

1.    Amazon EC2 콘솔을 엽니다.

2.    탐색 창의 로드 밸런싱 섹션에서 로드 밸런서를 선택합니다.

3.    로드 밸런서 생성을 선택합니다.

4.    로드 밸런서 유형 선택 섹션의 Application Load Balancer에서 생성을 선택합니다.

5.    이름에 로드 밸런서 이름을 입력합니다.

6.    가용 영역 섹션에서 Amazon ECS 클러스터가 생성된 VPC를 선택한 다음 인터넷에 액세스할 수 있는 서브넷을 두 개 선택합니다. 

7.    다음: 보안 설정 구성을 선택합니다.

8.    새 보안 그룹 생성을 선택합니다.

9.    보안 그룹 이름Sample Security-group을 입력합니다.

10.   규칙 추가를 선택합니다.

11.    포트 범위8080을 입력합니다. 소스0.0.0.0/0을 입력합니다.

12.    다음: 라우팅 구성을 선택합니다.

13.    대상 그룹에 대상 그룹의 이름을 입력합니다.

14.    대상 유형에서 IP를 선택합니다.

15.    다음: 대상 등록을 선택한 다음 대상 그룹을 등록하고 IP를 설정합니다.

16.    다음: 검토를 선택합니다.

17.    생성을 선택합니다.

작업 정의 생성

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창에서 작업 정의를 선택합니다.

3.    [새 태스크 정의 생성(Create new Task Definition)]을 선택합니다.

4.    Fargate를 선택한 후 [다음 단계(Next step)]를 선택합니다.

5.   필요에 따라 작업 정의를 구성한 다음 생성을 선택합니다.

다음 작업 정의 예제에서는 AWS Fargate 시작 유형과 Docker 허브의 Nginx 이미지를 사용합니다.

{
  "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
  "containerDefinitions": [{
    "name": "sample-website",
    "image": "nginx:latest",
    "essential": true,
    "portMappings": [{
      "hostPort": 80,
      "protocol": "tcp",
      "containerPort": 80
    }]
  }],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "256",
  "memory": "512",
  "family": "sample-website"
}

Amazon ECS 서비스 생성

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창의 Amazon ECS 섹션에서 클러스터를 선택한 다음 클러스터를 선택합니다.

3.    서비스 탭에서 생성을 선택하여 서비스를 생성합니다.

4.    서비스 구성 섹션에서 시작 유형으로 FARGATE를 선택합니다.

5.    작업 정의에서 이전 섹션에서 생성한 작업 정의를 선택합니다.

6.    서비스 이름에 서비스의 이름을 입력합니다. 예: Sample-Website

7.    작업 개수에 서비스를 통해 실행할 작업 개수를 입력합니다.

8.    배포 섹션에서 블루/그린 배포(AWS CodeDeploy 기반)를 선택합니다.

9.    CodeDeploy를 위한 서비스 역할에서 ecsCodeDeployRole을 선택합니다.

참고: 앞서 ecsCodeDeployRole 서비스 역할을 생성했습니다.

10.    다음 단계를 선택합니다.

11.    VPC 및 보안 그룹 섹션에서 클러스터 VPC와 서브넷을 선택합니다.

12.    로드 밸런싱 섹션에서 로드 밸런서 유형으로 Application Load Balancer를 선택합니다.

13.    로드 밸런서 이름에서 앞서 생성한 로드 밸런서를 선택합니다.

14.    로드 밸런싱할 컨테이너 섹션에서 로드 밸런서에 추가를 선택합니다.

15.    로드 밸런싱할 컨테이너 섹션에서 프로덕션 리스너 포트80:HTTP를 선택합니다.

16.    테스트 리스너 확인란을 선택합니다.

17.    테스트 리스너 포트에서 새로 생성을 선택한 다음 리스너 포트로 8080을 입력합니다.

18.    추가 구성 섹션에서 대상 그룹 1 이름으로 로드 밸런서를 생성할 때 만든 대상 그룹을 선택합니다.

19.    대상 그룹 2 이름의 경우 Amazon ECS 콘솔에서 sample-website-tg-2라는 이름의 새 대상 그룹을 생성합니다.

20.    Auto Scaling 설정(선택 사항) 페이지를 건너뛰고 다음 단계를 선택합니다.

21.    서비스 생성을 선택합니다.

이제 생성한 새 서비스에서 하나의 작업이 실행되는 것을 볼 수 있습니다.

Amazon ECS 블루/그린 배포가 작동하는지 확인

블루/그린 Amazon ECS 서비스를 생성한 후에는 변경 내용이 포함된 새 작업 정의를 생성한 다음 Amazon ECS 서비스를 업데이트할 수 있습니다. 그러면 CodeDeploy 콘솔에서 배포가 생성됩니다.

1.    Amazon ECS 콘솔을 여십시오.

2.    탐색 창에서 작업 정의를 선택합니다.

3.    작업 정의를 선택하고, 새 개정 생성을 선택한 다음 생성을 선택합니다.

참고: 다음 예제에서는 이미지 속성이 httpd:2.4를 사용하도록 업데이트됩니다.

{
  "executionRoleArn": "arn:aws:iam::account_ID:role/ecsTaskExecutionRole",
  "containerDefinitions": [{
    "name": "sample-website",
    "image": "httpd:2.4",
    "essential": true,
    "portMappings": [{
      "hostPort": 80,
      "protocol": "tcp",
      "containerPort": 80
    }]
  }],
  "requiresCompatibilities": [
    "FARGATE"
  ],
  "networkMode": "awsvpc",
  "cpu": "256",
  "memory": "512",
  "family": "sample-website"
}

4.    탐색 창에서 클러스터를 선택한 다음 Amazon ECS 서비스를 배포한 클러스터를 선택합니다.

5.    서비스 탭에서 Amazon ECS 서비스를 선택한 다음 업데이트를 선택합니다.

6.    서비스 구성 섹션에서 작업 정의로 3단계에서 생성한 최신 개정을 선택합니다.

7.    다음 단계를 선택하여 마법사의 나머지 페이지를 모두 건너뛴 다음 서비스 업데이트를 선택합니다.

8.    서비스 보기를 선택합니다.

9.    배포 탭의 배포 ID 열에서 배포 ID를 선택하여 CodeDeploy 배포를 확인합니다.


이 문서가 도움이 되었나요?


결제 또는 기술 지원이 필요합니까?