Amazon ECS 블루/그린 배포 생성
Amazon ECS 블루/그린 배포 생성
Amazon ECS 블루/그린 배포를 사용하면 변경 사항을 프로덕션 환경에 구현하기 전에 만들고 테스트할 수 있습니다. 이 글에서는 블루/그린 배포를 시작하는 방법을 알아봅니다.
출처: 문서
본문
Amazon ECS 블루/그린 배포를 사용하면 변경 사항을 프로덕션 환경에 구현하기 전에 만들고 테스트할 수 있어요.
사전 요구 사항 (Prerequisites)
블루/그린 배포를 시작하기 전에 다음 작업을 수행합니다.
- 적절한 권한을 구성합니다.
- Elastic Load Balancing 권한에 대한 정보는 로드 밸런서용 Amazon ECS 인프라 IAM 역할 문서를 참고하세요.
- Lambda 권한에 대한 정보는 Amazon ECS 블루/그린 배포의 Lambda 함수에 필요한 권한 문서를 참고하세요.
- (선택 사항) 관리형 트래픽 이동(managed traffic shifting)을 위해 다음 리소스 중 하나를 구성합니다. 서비스가 헤드리스(headless, 로드 밸런서나 Service Connect가 없음)라면 이 단계를 건너뛸 수 있어요. Amazon ECS는 헤드리스 서비스에 대해 트래픽 이동을 자동으로 관리하지 않습니다.
- Application Load Balancer — 자세한 내용은 블루/그린, 선형, 카나리아 배포용 Application Load Balancer 리소스 문서를 참고하세요.
- Network Load Balancer — 자세한 내용은 Amazon ECS 블루/그린, 선형, 카나리아 배포용 Network Load Balancer 리소스 문서를 참고하세요.
- Service Connect — 자세한 내용은 Amazon ECS 블루/그린, 선형, 카나리아 배포용 Service Connect 리소스 문서를 참고하세요.
- 수명 주기 단계에서 Lambda 함수를 실행할지 결정합니다:
PRE_SCALE_UPPOST_SCALE_UPTEST_TRAFFIC_SHIFTPOST_TEST_TRAFFIC_SHIFTPRODUCTION_TRAFFIC_SHIFTPOST_PRODUCTION_TRAFFIC_SHIFT- 자세한 내용은 AWS Lambda 개발자 가이드의 콘솔로 Lambda 함수 생성 문서를 참고하세요.
절차 (Procedure)
콘솔 또는 AWS CLI를 사용해 Amazon ECS 블루/그린 서비스를 만들 수 있습니다.
콘솔 (Console)
- 콘솔을 https://console.aws.amazon.com/ecs/v2 에서 엽니다.
- 서비스를 시작할 리소스를 결정합니다.
- Clusters에서: Clusters 페이지에서 서비스를 만들 클러스터를 선택합니다. 클러스터 세부 정보 페이지가 표시됩니다. Services 탭에서 Create를 선택합니다.
- Task definition에서: Task definitions 페이지에서 태스크 정의를 선택합니다. Deploy 메뉴에서 Create service를 선택합니다.
- Create service 페이지가 표시됩니다. Service details 아래에서 다음을 수행합니다:
- Task definition family에서 사용할 태스크 정의를 선택합니다. 그런 다음 Task definition revision에서 사용할 개정을 입력합니다.
- Service name에 서비스 이름을 입력합니다.
- 기존 클러스터에서 서비스를 실행하려면 Existing cluster에서 클러스터를 선택합니다. 새 클러스터에서 서비스를 실행하려면 Create cluster를 선택합니다.
- 태스크가 클러스터 인프라에 분산되는 방식을 선택합니다. Compute configuration 아래에서 옵션을 선택합니다.
- Capacity provider strategy 방식: Compute options 아래에서 Capacity provider strategy를 선택합니다. 전략을 선택합니다:
- 클러스터의 기본 capacity provider 전략을 사용하려면 Use cluster default를 선택합니다.
- 클러스터에 기본 capacity provider 전략이 없거나 사용자 지정 전략을 사용하려면 Use custom, Add capacity provider strategy를 선택한 다음 Base, Capacity provider, Weight를 지정하여 사용자 지정 capacity provider 전략을 정의합니다.
- 참고: 전략에서 capacity provider를 사용하려면 capacity provider가 클러스터와 연결되어 있어야 합니다.
- Launch type 방식: Compute options 섹션에서 Launch type을 선택합니다. Launch type에서 시작 유형을 선택합니다. (선택 사항)
Fargate가 지정된 경우 Platform version에서 사용할 플랫폼 버전을 지정합니다. 플랫폼 버전을 지정하지 않으면LATEST플랫폼 버전이 사용됩니다.
- Capacity provider strategy 방식: Compute options 아래에서 Capacity provider strategy를 선택합니다. 전략을 선택합니다:
- Deployment configuration 아래에서 다음을 수행합니다:
- Service type에서
Replica를 선택합니다. - Desired tasks에 서비스에서 실행하고 유지할 태스크 수를 입력합니다.
- Amazon ECS가 가용 영역 간 태스크 분포를 모니터링하고 불균형이 있을 때 재분배하도록 하려면 Availability Zone service rebalancing 아래에서
Availability Zone service rebalancing을 선택합니다. - Health check grace period에 태스크가 처음 시작된 후 서비스 스케줄러가 비정상 Elastic Load Balancing, VPC Lattice, 컨테이너 상태 확인을 무시하는 시간(초)을 입력합니다. 상태 확인 유예 기간 값을 지정하지 않으면 기본값 0이 사용됩니다.
- Bake time에 블루 개정이 종료되기 전에 블루와 그린 서비스 개정이 동시에 실행될 분(minute) 수를 입력합니다. 이는 검증과 테스트를 위한 시간을 제공합니다.
- Service type에서
- (선택 사항) 배포의 특정 단계에서 실행할 수명 주기 훅(lifecycle hook)을 구성합니다. Deployment lifecycle hooks 아래에서 Add를 선택합니다.
- Lambda hooks의 경우: Target type에서
Lambda를 선택합니다. Lambda function에 함수 이름이나 ARN을 입력합니다. Role에서 Lambda 함수를 호출할 권한이 있는 IAM 역할을 선택합니다. Lifecycle stages에서 Lambda 함수가 실행되어야 하는 단계를 선택합니다. - pause hooks의 경우: Target type에서
Pause를 선택합니다. Lifecycle stages에서 배포가 일시 중지되어야 하는 단계를 선택합니다. (선택 사항) Timeout에서 시간 초과 기간과 동작을 구성합니다.
- Lambda hooks의 경우: Target type에서
- Amazon ECS가 배포 실패를 감지하고 처리하는 방법을 구성하려면 Deployment failure detection을 확장하고 옵션을 선택합니다:
- 태스크를 시작할 수 없을 때 배포를 중지하려면 Use the Amazon ECS deployment circuit breaker를 선택합니다.
- 배포 서킷 브레이커가 배포를 실패 상태로 설정할 때 소프트웨어가 배포를 마지막 완료된 배포 상태로 자동 롤백하게 하려면 Rollback on failures를 선택합니다.
- 애플리케이션 지표에 따라 배포를 중지하려면 **Use CloudWatch alarm(s)**를 선택합니다. 그런 다음 CloudWatch alarm name에서 알람을 선택합니다. 새 알람을 만들려면 CloudWatch 콘솔로 이동합니다.
- CloudWatch 알람이 배포를 실패 상태로 설정할 때 소프트웨어가 배포를 마지막 완료된 배포 상태로 자동 롤백하게 하려면 Rollback on failures를 선택합니다.
- (선택 사항) Service Connect로 서비스를 상호 연결하려면 Service Connect를 확장하고 다음을 지정합니다:
- Turn on Service Connect를 선택합니다.
- Service Connect configuration 아래에서 클라이언트 모드를 지정합니다. 네임스페이스의 다른 서비스에만 연결하면 되는 네트워크 클라이언트 애플리케이션을 실행한다면 Client side only를 선택합니다. 네트워크 또는 웹 서비스 애플리케이션을 실행하고 이 서비스에 대한 엔드포인트를 제공하면서 네임스페이스의 다른 서비스에도 연결한다면 Client and server를 선택합니다.
- 기본 클러스터 네임스페이스가 아닌 네임스페이스를 사용하려면 Namespace에서 서비스 네임스페이스를 선택합니다. 이는 같은 AWS 리전의 AWS 계정에 별도로 생성된 네임스페이스이거나, AWS Resource Access Manager(AWS RAM)를 사용해 계정에 공유된 같은 리전의 네임스페이스일 수 있어요.
더 알아보기 (Learn more)
- 블루/그린 배포 구성에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.