brunch

10탄- ECR이용하여 ECS로 사이트를 띄워보자

실습 일부 가능, 도커 이미지 별도 준비 필요함

by Master Seo

ECR에 있는 도커 이미지를 이용하여, ECS로 사이트를 띄워보자

ECR (Amazon Elastic Container Registry) 사용

관리형 AWS 도커 레지스트리 서비스 사용




순서

<1> 선행 작업 - 도커 이미지 준비

<2> ECR 리포지토리를 만들자

<3> 리눅스 EC2 접속하기

<4> 도커 이미지 pull

<5> 새 이미지로 ECS 만들기

<6> 서비스 만들기



<1> 선행 작업


여기 실습에서 도커 이미지는 별도로 준비해야 한다.


1

도커 이미지 만들어 ECR 에 올리자

https://brunch.co.kr/@topasvga/1363


2

일반 계정으로 ECS사용시 할당 해야 할 권한

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_managed_policies.html



3

주요 작업

ECR 리포지토리 만들고

도커 이미지를 가져오고

도커 이미지를 AWS에 올리자. ECR 에 Image에 있어야 한다.

새 이미지로 ECS만들자




10 ecr.png





<2> ECR 리포지토리를 만들자

EC2InstanceRole 이 필요 하다.


1

Services > ECR > 리포지토리 > 리포지토리 생성 > 리포지토리 이름

seo-repo

> 리포지토리 생성


2

URI 복사해 놓자.

5555555555.dkr.ecr.us-west-2.amazonaws.com/myrepo


3

seorepo 클릭 > 왼쪽 > 권한 > 편집 > 설명문 추가 > 설명문 이름

seo-statement


4

> IAM 개체

EC2InstanceRole

// role이 필요하다.

정책을 만들고 ec2 role을 만든다.


5

> 작업

모든 이름 선택

> 저장


30 권한.png


40 edit.png


4


EC2InstanceRole 의 정책 내용 4가지


EC2 읽기

ECR 읽기

ECS 쓰기

Cloudwatch log에 저장하므로 쓰기



5

EC2InstanceRole role 필요


{

"Version": "2012-10-17",

"Statement": [

{

"Effect": "Allow",

"Action": [

"ec2:DescribeTags",

"ecs:CreateCluster",

"ecs:DeregisterContainerInstance",

"ecs:DiscoverPollEndpoint",

"ecs:Poll",

"ecs:RegisterContainerInstance",

"ecs:StartTelemetrySession",

"ecs:UpdateContainerInstancesState",

"ecs:Submit*",

"ecr:GetAuthorizationToken",

"ecr:BatchCheckLayerAvailability",

"ecr:GetDownloadUrlForLayer",

"ecr:BatchGetImage",

"logs:CreateLogStream",

"logs:PutLogEvents"

],

"Resource": "*"

}

]

}




<3> 리눅스 EC2 접속하기

50 putty.png




<4> 도커 이미지 pull


ECR 리파지토리에서 ECS 이미지 가져오기

1

docker pull amazon/amazon-ecs-sample

60 docker.png



2

형식

REPOSITORY=your-repository-uri (받아놓은 리포지토리 링크 )

실행

REPOSITORY=111199397329.dkr.ecr.us-west-2.amazonaws.com/myrepo


3

태그

docker tag amazon/amazon-ecs-sample:latest $REPOSITORY


4

로그인

EC2_REGION=`wget -q -O - http://169.254.169.254/latest/meta-data/placement/availability-zone | sed s/.$//` `aws ecr get-login --region $EC2_REGION --no-include-email`


70 login.png



5

PUSH하기

docker push $REPOSITORY

80 push.png



이미지 만들고 Push 하기

https://brunch.co.kr/@topasvga/1363



6. aws 에서 확인


ecr > 리포지토리 > myrepo 클릭 > images 에 이미지가 있는지 확인

90 aws.png





<5> 새 이미지로 ECS 만들기


1

작업 정의하기


Serives > ECS > 작업 정의 > 새작업 정의 생성 > EC2 > Next


맨아래 Configure JSON

100 jason.png


// JSON 코드

// YOUR-REPO URI 수정하기 ,

581442942746.dkr.ecr.us-west-2.amazonaws.com/myrepo

> 생성




<6> 서비스 만들기


1

Clusters > ECSClusters 클릭 > 생성 > Ec2 > 서비스 이름

seo-serivce1

Number of task

1

다음



2

로드 밸런서 유형

Network Load Balancer

Service IAM role

ecsServiceRole


로드밸런서 추가

80:TCP

> 다음

> 다음

> 서비스 생성



200.png


3

작업 결과 확인하기

세부정보 탭 보기

작업 탭 보기

이벤트 탭 보기



4

세부정보 탭 > 대상 그룹 이름 클릭 > 대상 탭 보기

그룹 세부정보 탭 보기 > MyLoadBalancer 클릭


210 targe group.png



5

load balancer > DNS네임 복사


220 lb dns.png



6

사이트 접속


230 php.png




<7> 참고


일반 계정으로 ECS사용시 할당 해야 할 권한

https://docs.aws.amazon.com/AmazonECS/latest/developerguide/ecs_managed_policies.html


https://docs.aws.amazon.com/ko_kr/AmazonECR/latest/userguide/what-is-ecr.html


https://aws.amazon.com/ko/ecs/features/


https://aws.amazon.com/ko/premiumsupport/knowledge-center/ec2-install-extras-library-software/


https://brunch.co.kr/@topasvga/1230


감사합니다.

keyword
매거진의 이전글400. MediaLive, MediaStore ,CF