ECS, ECR 및 Fargate - AWS의 도커

jisoolee·2023년 5월 15일
0

AWS Associate Developer

목록 보기
13/27

Amazon ECS(Elastic Container Service)

EC2 Launch Type

: 미리 프로비저닝한 EC2 인스턴스에 도커 컨테이너가 배포되는 타입

Fargate Launch Type

: EC2 인스턴스를 관리할 필요가 없는 서버리스 타입

  • AWS Fargate를 사용하면 서버를 관리하지 않고도 AWS에서 컨테이너를 실행할 수 있다.

IAM Roles for ECS

EC2 Instance Profile(EC2 Launch Type only)

ECS Task Role

Load Balancer Integrations

Data Volumes(EFS)

: EC2와 Fargate 시작 유형 모두와 호환되고 ECS 태스크에 파일 시스템을 바로 마운트할 수 있다.

  • S3를 ECS 태스크 파일 시스템으로 마운트할 수 없다.
  • EFS 볼륨은 서로 다른 EC2 인스턴스와 서로 다른 ECS 작업 간에 공유할 수 있다. 컨테이너의 영구 다중 AZ 공유 스토리지로 사용할 수 있다.

ECS Service Auto Scaling

: ECS 서비스의 CPU 사용률, 메모리 사용률(RAM), ALB 관련 지표인 타켓당 요청 수를 확장

  • EC2 시작 유형이라면 태스크 레벨에서의 ECS 서비스 확장이 EC2 인스턴스 클러스터의 확장과 다르다.

Target Tracking

Step Tracking

Scheduled Scaling

EC2 Launch Type

Auto Scaling EC2 Instance

Auto Scaling Group Scaling

ECS Cluster Capacity Provider

: 새 태스크를 실행할 용량이 부족하면 자동으로 ASG를 확장한다.

EC2 시작 유형의 경우 ECS Cluster Capacity Provider를 더 추천

ECS Rolling Update

ECS tasks invoke

Event Bridge

Event Bridge Schedule

SQS Queue

Task Definitions

: ECS 서비스에게 ECS 상에서 한 개, 혹은 다수의 도커 컨테이너를 실행하는 방법을 알려준다.(JSON 형식)

  • 이미지 이름, 컨테이너에 바인딩된 포트(EC2 상에 있는 경우에는 호스트), 컨테이너에 요구되는 메모리와 CPU, 환경 변수 및 네트워킹 정보, 태스크 정의로 연결된 IAM 역할 및 CloudWatch와 같은 로깅 구성을 포함한다.
  • 태스크 정의 당 하나 이상의 컨테이너를 정의할 수 있다.(최대 10개)

Load Balancing

EC2 Launch Type

: 태스크 정의 내에 컨테이너 포트만을 정의한 경우, 동적 호스트 포트 매핑을 한다.

  • 오직 ALB에만 유효하다.
  • EC2 인스턴스 보안 그룹이 ALB 보안 그룹으로부터의 모든 포트를 허용해야 한다.

Fargate

: ECS 태스크가 고유한 프라이빗 IP를 가진다.

One IAM Role per Task Definition

  • 역할은 서비스 수준이 아닌 태스크 정의 수준에서 정의된다.

Environment Variables

Data Volumes(Bind Mounts)

: bind mounts에는 EC2 Fargate 태스크 모두에 사용이 가능하다.

ECS Task Placement

: ECS는 대상 EC2 인스턴스의 사용 가능한 메모리와 CPU 그리고 포트를 확인할 수 있어야 한다.

  • EC2 상의 ECS에만 유효하다.

Process

  1. 태스크 정의 내의 CPU, 메모리, 그리고 포트 조건을 만족하는 인스턴스를 식별한다.
  2. 태스크 배치 제한을 확인한다.
  3. 태스크 배치 전략에 최대한 적합한 인스턴스를 식별하기 위한 시도를 한 후, 태스크 배치를 위한 인스턴스를 선택해 그 인스턴스에 태스크를 배치한다.

ECS Task Placement Strategies

Binpack

: 가장 많이 채워져있는 CPU, 혹은 메모리에 태스크를 배치하려 시도한다. 이를 통해 사용 중인 인스턴스의 수를 최소화 할 수 있어 비용을 절감할 수 있다.

Random

: 무작위로 태스크를 배치한다.

Spread

: 태스크가 특정 값을 기반으로 해 분산되어 배치된다.

ECS Task Placement Constraints

: 태스크가 배치되는 방식을 제한한다.

distinctInstance

memberOf

Amazon ECR(Elastic Container Registry)

: AWS에 도커 이미지를 저장하고 관리하는 데 사용된다.

  • Amazon ECR은 컨테이너 이미지를 쉽게 저장, 관리, 공유 및 배포할 수 있는 완전 관리형 컨테이너 레지스트리. Docker 기반 애플리케이션을 실행하는 데 도움이 되지 않는다.
  • ECR에 대한 모든 권한 문제는 IAM 권한 때문일 가능성이 크다. CodeBuild 서비스에는 Docker 이미지를 ECR 리포지토리로 푸시하는 데 필요한 권한이 있어야 한다.

AWS Copilot

: 컨테이너화된 프로덕션-레디 애플리케이션을 빌드 및 릴리즈하고 동작시키는 데 사용하는 명령줄 인터페이스 도구

Amazon EKS(Elastic Kubernetes Service)

: 관리형 kubernetes 클러스터를 AWS에서 시작하기 위한 수단

  • 워커 노드를 배포하고 싶다면 EC2 인스턴스를 선택할 수 있고 EKS 클러스터에 서버리스 컨테이너를 배포하고 싶다면 Fargate 모드를 선택할 수 있다.
  • 어떤 클라우드에서든 사용할 수 있다. 따라서 클라우드 또는 컨테이너를 마이그레이션하려는 경우에 EKS 사용은 훨씬 간단한 해결책이 될 수 있다.

Node Types

Managed Node Groups

Self-Managed Nodes

AWS Fargate

Data Volumes

  • EBS, EFS(works with Fargate), FSx for Lustre, FSx for NetApp ONTAP을 지원한다.

0개의 댓글