[AWS] Elastic Container Service (ECS) 사용법 - (1) Prerequisite & EC2 Launch Type 클러스터생성

2020. 7. 9. 15:32Engineering/AWS

 

AWS Elastic Container Service (ECS) 를 사용하기 위한 사전 작업(Prerequisite)을 수행하고, EC2  Launch type ECS 클러스터를 생성합니다. 

 

* 미리 알아두면 좋은 내용

- ECS 기초 개념 <자세히 알아보기>

- EC2 인스턴스에 ssh 접속하기 <자세히 알아보기>

 


1. 사전작업 (Prerequisite) 수행

Reference: 

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/get-set-up-for-amazon-ecs.html

 

Setting up with Amazon ECS - Amazon Elastic Container Service

The Amazon ECS console first run experience creates a security group for your instances and load balancer based on the task definition you use, so if you intend to use the Amazon ECS console, you can move ahead to the next section.

docs.aws.amazon.com

 

1-1. AWS 가입 및 IAM user 생성

별도 설명 없이도 쉽게 수행할 수 있는 기초적인 단계라 생각되어 글에서 설명은 생략 합니다.

자세한 내용은 가이드 참고.

 

 

1-2. 키페어 생성

키페어 생성이란 EC2 인스턴스에 접속하기위한 ssh key 생성하는 단계 입니다.

AWS 사용자는 Availability Zone(AZ) 별로 키페어를 생성하여 관리합니다.

 

예를 들어 내가 서울AZ에 인스턴스 A,B가 있다면, 서울AZ 키페어 하나로 A,B 인스턴스에 접속 가능합니다.

그러나 미동부AZ 인스턴스 C에 접속하기 위해서는 미동부AZ의 키페어를 새로 만들어 사용해야 합니다.

 

AWS콘솔에서 EC2 서비스 콘솔로 이동합니다.

콘솔 오른쪽 navigation bar에서 키페어를 생성할 AZ 선택한 ,

가이드의 설명에 따라 키페어를 생성하고 로컬 PC 다운받아 둡니다.

 

 

1-3. 보안그룹 생성

*ECS 문제인지, 클러스터 생성 시 미리 만들어둔 보안그룹을 선택할 수 가 없네요.

즉, 지금만들어도 소용 없다는 뜻입니다. ㅎㅎ

클러스터 만들면 별도 보안그룹이 새로 자동 생성되는데 이 자동으로 생성된 보안그룹의 인바운드 규칙을 다시 수정해야합니다.

여기서는 ECS클러스터 접근을 위해 어떤 인바운드 규칙을 추가 해야하는지를 알아보는 정도로 짚고 넘어가셔도 됩니다.

 

 

보안그룹이란 EC2 인스턴스의 포트포워딩 규칙 그룹 입니다.

 

AWS콘솔에서 EC2 서비스 콘솔로 이동합니다.

가이드의 설명에 따라 HTTP, HTTPS 포트(80, 443) 로의 모든 인입을 허가하고,

SSH 접속을 위한 22포트로의 개인 IP로의 인입을 허가 하는 규칙을 생성했습니다.

 

 

 

2. EC2 Launch Type ECS 클러스터 생성

이제 실제로 ECS 클러스터를 생성해 보겠습니다.

본 글에서는 EC2 Launch Type (Linux OS)를 사용합니다.

 

AWS콘솔에서 ECS 서비스를 선택하여 ECS 콘솔로 진입합니다.

클러스터 생성을 누르고,클러스터 템플릿으로 'EC2 Linux + 네트워킹'을 선택합니다. 

 

 

클러스터 구성 값들을 채워 넣어 줍니다.

키페어값 넣을 때 주의!

클러스터 생성하려는 AZ와 동일한 AZ의 키페어 선택해야 합니다.

저는 클러스터도 서울AZ 생성할거라, 미리 만들어두었던 서울AZ 키페어를 선택했습니다.

 

 

 

 

 

보안그룹은 콤보박스가 있긴 한데 클릭이 비활성화되어 있네요…

1-3.에서 말했듯이 이것 때문에 미리 만들어둔 보안그룹을 사용하여 클러스터 생성이 불가하고,

클러스터 생성 시 아무 규칙이 추가되지 않은 새로운 보안그룹이 생성됩니다.

그래서 일단은 진행하고 나중에 보안규칙을 추가하겠습니다. 

 

 

 

 

컨테이너 인스턴스 IAM 역할 값을 선택해야 합니다.

컨테이너 인스턴스는 ECS 클러스터를 구성하는 EC2 인스턴스를 말합니다.

 

이전글에서 설명한 컨테이너 에이전트가 컨테이너 인스턴스에서 ECS API 호출합니다.

컨테이너 인스턴스에 ECS API 호출 권한을 주려면 ecsInstanceRole IAM 정책이 필요하다고 하네요.

미리 만들어둔 ecsInstanceRole 있다면 콤보박스에서 선택해주시고,

없는 경우 ' 역할 생성' 선택하면 AWS 자동생성 해준다고 합니다.

 

 

 

최종으로 생성 버튼을 눌러 봅니다.

클러스터 생성 3 단계가 순차적으로 수행됩니다.

모든 단계가 정상 완료되면 초록색으로 체크표시 되네요.

 

 

'클러스터 보기' 버튼을 누르면 클러스터 상세 정보가 조회 됩니다.

저는 ECS 인스턴스에 직접 ssh접속 까지 해보겠습니다.

ECS 인스턴스 탭을 조회해보니 제가 신청한 2개의 인스턴스가 생성되었네요.

 

 

 

EC2 인스턴스 열의 링크를 눌러보면, 바로 EC2 콘솔로 이동합니다.

ECS 인스턴스를 체크하고 '연결' 버튼을 누르면 ssh 접속 방법이 안내 됩니다.

 

 

 

처음 '연결' 버튼을 누르면 SSH 포트가 보안그룹에 추가되어 있지 않다고 나옵니다.

, 클러스터 생성시에 prerequisite단계에서 미리 만들어둔 보안그룹 선택이 막혀 있었죠.

그래서 새로운 보안그룹이 자동 생성되었고, 보안그룹에는 아무런 규칙이 추가되어 있지 않은 상태입니다.

 

SSH 포트 개방을 위한 규칙을 추가 해볼까요 ?

보안그룹 메뉴로 들어가면, EC2ContainerService-{클러스터명} 으로 시작하는 보안그룹이 생성되어 있는걸 있습니다.

여기서 SSH 포트로 개인 로컬IP 접속을 허가하는 인바운드 규칙을 추가해주세요.

 

 

 

그리고 다시 EC2 인스턴스 조회탭에 돌아가 '연결' 버튼을 누르고, 시키는 대로 해보시죠.

키페어 파일은 미리 다운받아 두셨죠? 그걸 사용하시면 됩니다.

EC2 인스턴스에 SSH 접속하는 방법을 자세히 알고 싶은 분은 이전글 참고하세요.

 

 

 

접속완료!