내용으로 건너뛰기

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

5분 분량
0

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

간략한 설명

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

해결 방법

IAM 서비스 역할 생성

Amazon ECS에서 AWS CodeDeploy의 블루/그린 타입을 배포하려면 먼저 CodeDeploy 서비스에 사용자를 대신하여 ECS 서비스를 업데이트할 수 있는 권한이 있어야 합니다. 이러한 권한을 부여하려면 다음 단계를 완료하십시오.

  1. AWS Identity and Access Management(IAM) 콘솔을 엽니다.
  2. 탐색 창에서 Roles(역할)를 선택합니다.
  3. Create role(역할 생성)을 선택합니다.
  4. Select type of trusted entity(신뢰할 수 있는 주체 유형 선택) 섹션에서 AWS service(AWS 서비스)를 선택한 다음 CodeDeploy를 선택합니다.
  5. Select your use case(사용 사례 선택) 섹션에서 CodeDeploy - ECS를 선택하고 Next(다음)를 선택합니다.
    참고: 기본 AWSCodeDeployRoleForECS 정책을 유지합니다. 이 정책에는 CodeDeploy가 Amazon ECS 및 기타 서비스와 올바르게 상호 작용하는 데 필요한 권한이 포함되어 있습니다.
  6. Next(다음)를 선택합니다.
  7. Role name(역할 이름)에 ecsCodeDeployRole을 입력합니다.
  8. (선택 사항) 태그 추가
  9. Create role(역할 생성)을 선택합니다.

Application Load Balancer 생성

Application Load Balancer를 생성하려면 다음 단계를 완료하십시오.

  1. Amazon EC2 콘솔을 엽니다.
  2. 탐색 창의 Load Balancing(로드 밸런싱) 섹션에서 Load Balancers(로드 밸런서)를 선택합니다.
  3. Create Load Balancer(로드 밸런서 생성)를 선택합니다.
  4. Select load balancer type(로드 밸런서 유형 선택) 섹션에서 Application Load Balancer에 대해 Create(생성)를 선택합니다.
  5. Name(이름)에 로드 밸런서의 이름을 입력합니다.
  6. Network Mapping(네트워크 매핑) 섹션에서 Amazon ECS 클러스터가 생성된 VPC를 선택합니다. 그런 다음 인터넷에 액세스할 수 있는 서브넷 두 개를 선택합니다.
  7. 보안 그룹 섹션에서 "새 보안 그룹 생성" 하이퍼링크를 선택합니다.
  8. Security group name(보안 그룹 이름)에 Sample Security-group을 입력합니다.
  9. Add Rule(규칙 추가)을 선택합니다.
  10. Port Range(포트 범위)에 8080을 입력합니다. Source(소스)에 0.0.0.0/0을 입력합니다.
  11. Create Security Group(보안 그룹 생성)을 선택합니다.
  12. 로드 밸런서 페이지 보기에서 보안 그룹을 새로 고친 다음 새로 만든 보안 그룹을 선택합니다.
  13. Listeners and Routing(리스너 및 라우팅) 섹션에서 "대상 그룹 생성" 하이퍼링크를 선택합니다.
  14. Target type(대상 유형)에서 IP addresses(IP 주소)를 선택합니다.
  15. Target group(대상 그룹)에 대상 그룹의 이름을 입력합니다.
  16. Next(다음)를 선택한 후 대상 그룹을 등록하고 IP를 설정합니다.
  17. Create Target Group(대상 그룹 생성)을 선택합니다.

작업 정의 생성

다음 단계를 완료하십시오.

  1. Amazon ECS 콘솔을 엽니다.
  2. 탐색 창에서 Task Definitions(작업 정의)를 선택합니다.
  3. Create new Task Definition(새 작업 정의 생성)을 선택합니다.
  4. Fargate를 선택한 후 Next step(다음 단계)을 선택합니다.
  5. 작업 정의를 구성한 다음 Create(생성)를 선택합니다.

다음 예시 작업 정의는 AWS Fargate 시작 유형과 Docker Hub의 NGINX 이미지를 사용합니다.

참고: 이 예시와 다음 예시에서 account_ID 값을 해당 계정 번호로 바꾸십시오.

{
  "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에서 Clusters(클러스터)를 선택한 다음 해당 클러스터를 선택합니다.
  3. Services(서비스) 탭에서 Create(생성)를 선택하여 서비스를 생성합니다.
  4. Environment(환경) 섹션에서 Launch type(시작 유형)을 선택한 다음 FARGATE를 선택합니다.
  5. Task Definition(태스크 정의)에서 이전 섹션에서 생성한 작업 정의를 선택합니다.
  6. Service name(서비스 이름)에 서비스 이름을 입력합니다. 예를 들면 다음과 같습니다. Sample-Website.
  7. Number of tasks(태스크 수)에 복사하려는 작업 수를 입력합니다.
  8. Deployment options(배포 옵션) 섹션에서 **블루/그린 배포(AWS CodeDeploy에서 제공)**를 선택합니다.
  9. Service role for CodeDeploy(CodeDeploy를 위한 서비스 역할)에서 앞서 생성한 ecsCodeDeployRole 서비스 역할을 선택합니다.
  10. Networking(네트워킹) 섹션에서 클러스터 VPC와 서브넷, 앞서 생성한 보안 그룹을 선택합니다.
  11. Load balancing(로드 밸런싱) 섹션의 Load balancer(로드 밸런서) 유형에 대해 Application Load Balancer를 선택합니다.
  12. Load balancer name(로드 밸런서 이름)에서 이전에 생성한 로드 밸런서를 선택합니다.
  13. Listeners(리스너) 섹션의 Production listener port(프로덕션 리스너 포트)에서 80:HTTP를 선택합니다.
  14. Add a Test listener(테스트 리스너 추가) 확인란을 선택합니다.
  15. Test listener port(테스트 리스너 포트)에서 create new(새로 생성)를 선택한 다음 리스너 포트로 8080을 입력합니다.
  16. Target groups(대상 그룹) 섹션의 Target group 1 name(대상 그룹 1 이름)으로 로드 밸런서를 생성할 때 생성한 대상 그룹을 선택합니다.
  17. Target group 2 name(대상 그룹 2 이름) 경우 Amazon ECS 콘솔에서 sample-website-tg-2라는 이름으로 새 대상 그룹을 생성합니다.
  18. Create(생성)를 선택합니다.

이제 하나의 작업이 실행 중인 새로 생성한 서비스를 확인할 수 있습니다.

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

블루/그린 Amazon ECS 서비스를 생성한 후, 변경 사항을 반영하여 새 작업 정의 개정을 생성하고 Amazon ECS 서비스를 업데이트하십시오. 이 작업을 수행하면 CodeDeploy 콘솔에 배포가 생성됩니다.

배포가 제대로 작동하는지 확인하려면 다음 단계를 완료하십시오.

  1. Amazon ECS 콘솔을 엽니다.

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

  3. 작업 정의를 선택하고 Create new revision(새 개정 생성)을 선택한 다음 Create(생성)를 선택합니다.
    참고: 다음 예에서는 image 속성이 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. 탐색 창에서 Clusters(클러스터)를 선택한 다음 Amazon ECS 서비스를 배포한 클러스터를 선택합니다.

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

  6. Deployment configuration(배포 구성) 섹션의 Task Definition(작업 정의)에서 3단계에서 생성한 최신 개정을 선택합니다.

  7. Update(업데이트)를 선택합니다.

  8. Deployments(배포) 탭의 Deployment Id(배포 ID) 열에서 배포 ID를 선택하여 CodeDeploy 배포를 확인합니다.

AWS 공식업데이트됨 2년 전
댓글 없음

관련 콘텐츠