Amazon Elastic Container Service(ECS)상에

Amazon Elastic Container Service(ECS)는 확장 가능한 클러스터에서 Docker 애플리케이션을 실행하는 데 사용하는 Amazon Web Services입니다. 본 자습서에서는 로드 밸런서 뒤에서 Amazon ECS 클러스터에서 Docker 지원 샘플 애플리케이션을 실행하고, 샘플 애플리케이션을 테스트하며, 비용이 부과되지 않도록 리소스를 삭제하는 방법을 배웁니다.

본 자습서에서 수행하는 모든 작업은 프리 티어에 해당합니다.

AWS 리소스 관리

콘솔에 로그인

Amazon ECS 첫 실행 마법사는 클러스터를 생성하고 샘플 웹 애플리케이션을 시작하는 방법을 안내합니다. 이 단계에서는 Amazon ECS 콘솔을 열고 마법사를 시작합니다.



b. Amazon ECS에는 Amazon Elastic Container Registry(ECR)를 사용하여 이미지 리포지토리를 생성하고 이미지를 리포지토리로 푸시하는 옵션이 첫 실행 마법사에 포함되어 있습니다(오른쪽 스크린샷 참조). 현재 이 기능은 일부 리전에서만 제공됩니다. 

  • Amazon ECR 옵션이 없는 경우, 2단계로 건너뛰십시오.
  • Amazon ECR 옵션이 있는 경우, Deploy a sample application onto an Amazon ECS Cluster 옆에 있는 상자를 선택 해제하고 Continue를 선택합니다.
deploy-docker-container-1

(확대하려면 클릭)

deploy-docker-container-1

작업 정의는 애플리케이션에 대한 청사진과 같습니다. 이 단계에서 Amazon ECS가 컨테이너에 어떤 Docker 이미지를 사용하고, 작업에 몇 개의 컨테이너를 사용하며, 각 컨테이너에 대한 리소스 할당은 어떻게 되는지 알 수 있도록 작업 정의를 지정합니다.


작업 정의에는 기본 구성 값이 사전에 로드되어 있습니다.

  • 기본값을 확인하고 Next Step을 선택합니다.

구성을 변경하길 원하거나 자세한 내용을 알아보려면 Task Definition Parameters를 참조하십시오.

deploy-docker-container-2

(확대하려면 클릭)

deploy-docker-container-2

작업 정의를 생성하였으니 이제 Amazon ECS 서비스를 구성하겠습니다. 서비스는 클러스터에서 작업 정의 사본을 시작 및 유지 관리합니다. 예를 들어 애플리케이션을 서비스로 실행하면 Amazon ECS에서 중단된 작업을 복구하고 지정한 사본 수를 유지 관리합니다.


a. 서비스 옵션 구성:

  • Service Name: 기본 sample-webapp은 AWS에서 제공하는 웹 기반 "Hello World" 애플리케이션입니다. 이 애플리케이션은 무기한으로 실행되므로 이를 서비스로 실행하면, 작업이 비정상이 되거나 갑자기 중단되는 경우 작업을 다시 시작합니다.
  • Desired number of tasks: AWS 프리 티어를 벗어나지 않으려면 기본값을 1로 유지합니다. 이렇게 하면 작업 사본 1개가 생성됩니다.
deploy-docker-container-3

(확대하려면 클릭)

deploy-docker-container-3

b. Elastic Load Balancing: 서비스에서 로드 밸런서를 사용하도록 선택할 수 있습니다. Amazon ECS에서는 Elastic Load Balancing(ELB) 로드 밸런서를 생성하여 작업이 시작된 컨테이너 인스턴스 전체에 트래픽을 분산할 수 있습니다.

  • Container name: host port: Simple-app:80을 선택합니다.
  • 샘플 애플리케이션에는 ELB 리스너 프로토콜, ELB 리스너 포트 및 ELB 상태 확인에 대한 기본값이 설정되어 있습니다. 로드 밸런싱 구성에 대한 자세한 내용은 Service Load Balancing을 참조하십시오.
deploy-docker-container-3b

(확대하려면 클릭)

deploy-docker-container-3b

c. 로드 밸런서를 Amazon ECS 서비스에 연결할 수 있으려면, 먼저 서비스에서 사용할 Identity and Access Management(IAM) 역할을 생성해야 합니다. 그러면 Amazon ECS가 Amazon EC2 및 Elastic Load Balancing API를 호출하여 로드 밸런서에 인스턴스를 등록하거나 등록 해제할 수 있습니다.

  • 서비스 IAM 역할이 아직 없는 경우 Amazon ECS에서 ecsServiceRole이라는 역할을 생성합니다.
  • Amazon ECS 서비스 역할이 이미 있는 경우, 드롭다운에서 이를 선택합니다.
deploy-docker-container-3c

(확대하려면 클릭)

deploy-docker-container-3c

d. 설정을 확인하고 Next Step을 선택합니다.

deploy-docker-container-3d

(확대하려면 클릭)

deploy-docker-container-3d

Amazon ECS 작업은 Amazon ECS 컨테이너 에이전트를 실행하는 컨테이너 인스턴스 집합인 클러스터에서 실행됩니다이 단계에서는 클러스터를 구성하고, 보안 설정을 검토하며, IAM 역할을 설정합니다. 


a. 아래와 같이 구성 설정을 적용합니다.

  • Cluster namesample-cluster를 입력합니다.
  • EC2 instance type: 기본 t2.micro 인스턴스 유형을 사용하면 프리 티어 범위 내에서 유지할 수 있습니다. CPU와 메모리 리소스가 더 큰 인스턴스 유형은 더 많은 작업을 처리할 수 있습니다. 다양한 인스턴스 유형에 대한 자세한 내용은 Amazon EC2 인스턴스 유형을 참조하십시오.
  • Number of instances: 작업이 배치될 클러스터에서 1개의 Amazon EC2 인스턴스를 시작하도록 기본값 1을 유지합니다. 클러스터의 인스턴스 수를 늘릴수록 더 많은 작업을 인스턴스에 배치할 수 있습니다.  
  • Key pair: 나중에 인스턴스에 대한 SSH 액세스를 위해서는 키 페어가 필요합니다. None – unable to SSH를 선택하거나, 기존 키 페어를 선택하거나, Amazon EC2 콘솔에서 새로운 키 페어를 생성할 수 있습니다. 
deploy-docker-container-5a

(확대하려면 클릭)

deploy-docker-container-5a

b. (선택 사항) Security Group: 기본값인 (Anywhere)를 사용하면 어느 인터넷에서나 액세스할 수 있습니다. 또한, 인스턴스에 대한 액세스를 제한하는 CIDR 블록을 사용하도록 선택할 수도 있습니다.

deploy-docker-container-5b

(확대하려면 클릭)

deploy-docker-container-5b

c. 컨테이너 인스턴스 IAM 역할:

  • 보유한 IAM 역할이 없는 경우 Amazon ECS 마법사가 자동으로 이를 생성합니다.
  • 기존 컨테이너 인스턴스 IAM 역할이 있는 경우, 드롭다운 목록에서 이를 선택합니다.
deploy-docker-container-5c

(확대하려면 클릭)

deploy-docker-container-5c

d. Review and Launch를 선택합니다.

deploy-docker-container-5d

(확대하려면 클릭)

deploy-docker-container-5d

이전 단계에서 작업 정의(애플리케이션 청사진과 비슷), Amazon ECS 서비스(작업 정의 사본을 시작 및 유지 관리) 및 클러스터(컨테이너 에이전트를 실행하는 컨테이너 인스턴스 집합)를 구성했습니다. 이 단계에서는 생성한 리소스를 검토, 시작 및 확인합니다.


a. 시작하기 전에 작업 정의, 작업 구성 및 클러스터 구성을 검토할 마지막 기회입니다.

  • Launch instance & run service를 선택합니다. 
deploy-docker-container-6

(확대하려면 클릭)

deploy-docker-container-6

b. 시작 상태를 보여주고 프로세스의 각 단계를 설명하는 Launch Status 페이지에 있습니다. 

  • 시작이 완료되면 View service를 선택합니다.
deploy-docker-container-7

(확대하려면 클릭)

deploy-docker-container-7

이 단계에서는 브라우저가 로드 밸런서 DNS 이름을 가리키도록 하여 샘플 애플리케이션이 실행되고 있는지 확인합니다.


a. sample-webapp 페이지에서 로드 밸런서 이름을 클릭합니다.

deploy-docker-container-10

(확대하려면 클릭)

deploy-docker-container-10

b. 이제 샘플 애플리케이션을 테스트합니다.

  • ELB DNS 이름을 복사합니다.
  • 새로운 브라우저 창에 붙여넣습니다.
  • 키보드에서 Enter를 눌러 샘플 애플리케이션을 봅니다(이 경우에는 정적 웹 페이지).
deploy-docker-container-12a

(확대하려면 클릭)

deploy-docker-container-12a

본 자습서에서는 3개의 리소스, 즉 Amazon ECS 클러스터, Amazon EC2 인스턴스 및 로드 밸런서를 시작했습니다. 이 단계에서는 원하지 않는 비용이 발생하지 않도록 모든 리소스를 정리합니다.


a. Amazon ECS 콘솔 페이지로 돌아갑니다. 

  • 클러스터 이름(sample-cluster)을 클릭합니다.
deploy-docker-container-13

(확대하려면 클릭)

deploy-docker-container-13

b. sample-webapp 옆에 있는 확인란을 선택하고 Update를 클릭합니다.

deploy-docker-container-15

(확대하려면 클릭)

deploy-docker-container-15

c. 활성 상태의 작업이 있는 서비스를 실수로 삭제하는 것을 방지하기 위해서는 Amazon ECS가 서비스를 삭제하기 전에 모든 작업을 중단해야 합니다. 

  • Number of tasks를 0으로 설정하고 Update Service를 선택합니다.
  • 서비스를 업데이트한 후 Delete를 선택합니다.
deploy-docker-container-14

(확대하려면 클릭)

deploy-docker-container-14

d. 클러스터에서 시작된 Amazon EC2 인스턴스를 삭제합니다.

  • Amazon EC2 콘솔을 엽니다.
  • 왼쪽 창에서 Instances를 선택합니다.
  • ECS Instance – EC2ContainerService-default라는 이름의 인스턴스 옆에 있는 확인란을 선택합니다.
  • Actions > Instance State > Terminate를 선택합니다.

 

 

deploy-docker-container-17

(확대하려면 클릭)

deploy-docker-container-17

e. 로드 밸런서를 삭제합니다.

  • 왼쪽 창에서 Load Balancers를 선택합니다.
  • 서비스용으로 생성한 로드 밸런서 옆에 있는 확인란을 선택합니다(EC2Contai-EcsElast로 시작하는 이름). 
  • 마우스 오른쪽 버튼을 클릭하고 Delete를 선택합니다.

 

deploy-docker-container-19a

(확대하려면 클릭)

deploy-docker-container-19a

축하합니다! Amazon Elastic Container Service(ECS)를 사용하여 Docker 지원 애플리케이션을 구성, 배포 및 삭제하는 방법을 배웠습니다. Amazon ECS는 Docker 컨테이너를 지원하는 확장성과 성능이 뛰어난 컨테이너 관리 서비스로서, 서비스를 사용하여 Amazon EC2 인스턴스의 관리형 클러스터에서 애플리케이션을 손쉽게 실행할 수 있습니다.

Amazon ECS에 Docker 지원 애플리케이션을 배포하는 방법을 배웠으니 이제 다음 자습서로 넘어가서 Docker 레지스트리를 생성하여 컨테이너 이미지를 저장하는 방법을 배웁니다. Docker 이미지를 구축하고, 이를 리포지토리에 푸시한 후, 이를 사용하여 애플리케이션을 Amazon ECS에 배포합니다.

Docker 레지스트리 생성

아니요