본문 바로가기
CSP (Cloud Service Provider)/AWS

ECS 구성 (Fargate)

by BTC_물콩 2023. 7. 20.

베하 ~ 콩순이들 BTC_물콩입니닷

오늘은 Fargate를 통해 ECS 구성을 해보겠습니다 !

 

ECS (Elastic Container Service)란 ?

AWS에서 제공하는 서비스로, 컨테이너 기반의 애플리케이션을 쉽게 실행, 관리 및 배포할 수 있게 해주는 서비스입니다. ECS에서는 컨테이너를 실행하는 두 가지 실행 유형이 있습니다

1. ECS Fargate
    - Fargate는 AWS에서 관리하는 완전 관리형 컨테이너 실행 환경을 제공합니다.
    - 사용자는 EC2 인스턴스를 직접 관리할 필요 없이 컨테이너만에 집중할 수 있습니다.
    - Fargate 클러스터를 생성하여 사용하며, 클러스터에서 컨테이너를 실행하기 위해 EC2 인스턴스를 프로비저닝하거나 관리할 필요가 없습니다.
    - 컨테이너를 실행할 때, 사용자가 지불하는 요금은 컨테이너의 메모리와 CPU 사용량에 따라 책정됩니다.

Fargate는 더 간단한 비용 모델을 제공합니다.
    - Fargate는 EC2 인스턴스의 확장, 클러스터 용량 관리 등과 같은 서버 인프라에 대한 걱정 없이 컨테이너를 실행할 수 있게 합니다.


2. ECS EC2
    - EC2 실행 유형은 ECS를 사용하면서 EC2 인스턴스를 직접 관리하고자 할 때 선택하는 옵션입니다.
    - EC2 실행 유형에서는 컨테이너를 실행하는 데 필요한 EC2 인스턴스를 먼저 프로비저닝해야 합니다.
    - EC2 인스턴스에 Docker 데몬과 ECS 에이전트를 설치하여 컨테이너를 실행하고 클러스터를 관리합니다.
    - EC2 실행 유형은 기존에 사용하던 EC2 인스턴스를 활용할 수 있고, 보다 세밀한 컨트롤과 사용자 정의가 필요한 경우 에 유용합니다.
    - 사용자는 EC2 인스턴스의 유형, 크기, 운영 체제 등을 선택하여 컨테이너를 실행할 수 있습니다.

이때, EC2 실행 유형은 컨테이너 실행과 함께 EC2 인스턴스의 관리, 운영, 확장 등에 관련된 책임을 가지게 됩니다.

 

[실습과정]

1. EC2

    - 웹 애플리케이션이나 서비스의 실행 환경과 코드 등을 포함한 패키지

    - ECR에 올릴 이미지 생성

2. ECR 

    - Docker 이미지를 저장하는 완전관리형 Docker 컨테이너 레지스트리

    -  ECS에서 사용할 이미지 업로드

3. ECS 

   - Docker 컨테이너를 실행, 관리하기 위한 서비스

   - Fargate로 인프라 환경 구성

 

[실습]

1. EC2에 ECR에 올릴 이미지 생성

# Docker Download
sudo -i
yum install docker -y
systemctl start docker

# Dockerfile 생성
vim Dockerfile
---
FROM httpd:2.4
COPY ./public-html/ /usr/local/apache2/htdocs/
---

mkdir public-html

EC2에 먼저 도커를 깔아준 다음 간단한 도커 파일을 생성해 줍니다 !

저는 Apach를  Dockerfile을 생성해 주었습니다 !!

 

2. ECR에 해당 Dockerfile Push

AWS 콘솔 -> EKS -> ECR로 접속해줍니다.

리포지토리를 프라이빗에 하나 생성 한 후,

리포지토리 이름을 클릭하고 들어가면 푸시 명령어를 확인하실 수 있습니다 !!

해당 명령어를 Dockerfile이 존재하는 EC2에 차례대로 쳐줍니다 !

이때, EC2에 AWS Configure 등록과, AWS CLI 설치는 필 수 !! 입니다 !

 

위 과정을 다 따라하면 리포지토리에 이미지 하나가 올라간 것을 확인하실 수 있습니다 ~

 

3. ECS에서 Fargate로 인프라 환경 구성

1) Task 정의

AWS 콘솔 -> ECS -> 태스크 정의

 

먼저 태스크 정의를 해줍니다.

태스크 정의 생성을 클릭 한 후,

컨테이너 세부 정보를 입력해줍니다!!.

이때 전 단계에서 생성했던 리포지토리의 이름과, Push 했던 이미지 URI를 입력해줍니당

앱 환경은 AWS Fargate(서버리스)로 선택하고 태스크 역할은 모두 기본값으로 설정해줄게욤

 

2 ) 클러스터 생성

AWS 콘솔 -> ECS -> 클러스터

 

다음은 클러스터 생성을 해줍니다 !

VPC와 Subnet을 선택하고,

Amazon EC2 인스턴스의 ASG를 선택해준 다음 클러스터 생성을 누르면 완성 !!

 

3) 서비스 생성

AWS 콘솔 -> ECS -> 클러스터 -> 서비스 생성

 

마지막으로 서비스를 생성해봅시다 !!

클러스터가 생성 된 후 해당 클러스터에서 서비스 생성을 클릭합니다 !!

시작유형은 Fargate로 선택해주시고 패밀리도 태스크 정의에서 생성했던 태스크를 선택해줍니다 !

 

그럼 보든 Fargate로 ECS를 구성하는 모든 과정이 끝났는데요 !!

 

서비스와 해당 컨테이너를 기반으로 태스크가 생성된 모습을 확인하실 수 있습니다 !!

두근두근 태스크의 퍼블릭 IP로 들어가면...!!

 

쨔란 ~~ Dockerfile로 생성했었던 Apache를 확인 할 수 있습니다 !!!

 

 

비록 저는 이번 실습에서 서비스와 태스크를 1개씩만 생성했지만,

여러분들이 실제로 서비스에 생성하신다면 태스크 여러개를 생성하여 타겟그룹에 등록한 후 ALB에 연결시키면 

트래픽 분산도 하고 너무 좋겠쬬 ?!

 

그럼 다음 시간에 만나효 베 빠 ~~~

댓글