ECS - EC2 간단 배포하기 [1] - EC2에 ECS 에이전트 설정
클라우드 환경에서 컨테이너 애플리케이션을 배포할 때, 보통 EC2나 GCE(Google Compute Engine)에 Docker를 설치하고 컨테이너를 직접 띄우는 방식으로 운영했었다. 하지만, AWS에서는 ECS(Amazon Elastic Container Service)를 이용해 더 쉽게 컨테이너를 배포하고 관리할 수 있다고 들어서 오늘은 미루고 미뤄왔던 'ECS롤 통해서 배포'를 해보려고 한다.
그 중 오늘 다룰 목차는 이렇게 된다.
1. IAM 역할 설정 -> EC2에 역할 부여
2. ECS 클러스터 생성
3. Docker 설정
4. ECS 에이전트 설치
✅ 1. IAM 역할 생성 (EC2가 ECS에 접근할 권한 부여)
ECS에서 EC2를 정상적으로 실행하려면, EC2 인스턴스가 AWS ECS와 통신할 수 있도록 IAM 역할을 부여해야 한다.
1️⃣ IAM 역할 생성
1. AWS 콘솔 > IAM > 역할(Roles) > 새 역할 생성2️⃣
EC2에 연결할 것이기 때문에 AWS 서비스와 EC2를 선택해주고 생성한다
2. 정책 추가 (아래 정책을 검색하여 추가)
- AmazonEC2ContainerServiceforEC2Role
- AmazonSSMManagedInstanceCore (옵션: Systems Manager를 통해 접속하려면 필요)
3. 역할 이름 생성
2️⃣ EC2에 역할 연결
✅ 2. ECS 클러스터 생성
1. AWS 콘솔 > ECS > 클러스터 생성
2. 클러스터 이름 입력 (예: kobaco-cluster)
3. 기존 EC2에 직접 등록할 것이므로 → "AWS Fargate 및 EC2 선택 옵션 해제"
4. 클러스터 생성 완료
🤔 왜 여기서 인프라를 선택하지 않을까?🤔
ECS 클러스터를 생성할 때 Infrastructure 옵션에서 Amazon EC2 instances를 선택하면 기본적으로 Auto Scaling Group(ASG)이 생성되도록 설정된다. 하지만, EC2 인스턴스 한 대만 사용할 경우 Auto Scaling Group을 사용할 필요가 없다.
따라서, ECS 클러스터 생성 시 Auto Scaling Group에 연결하지 말고, EC2 인스턴스를 먼저 생성한 후 직접 클러스터에 연결하는 것이더 효율적이다!
✅ 3. EC2 인스턴스 생성 및 ECS Agent 설치 + IAM 정책 연결
1️⃣ EC2 인스턴스 생성
1. AWS 콘솔 > EC2 > 인스턴스 시작
2. 이름 및 태그 입력, amazon Linux ami 선택
3. 인스턴스 유형 : t2.micro(프리 티어)
2️⃣ EC2 에 Iam 정책 연결
1. 작업 -> 보안 -> iam 역할 수정
2. 아까 만들어 놓은 iam 역할을 할당한다.
3️⃣ ECS Agent 설치
이후 인스턴스에 접속한다.
EC2 생성 시에 다운받아 놓은 pem키로 접근하거나, 그냥 콘솔에서 접근하거나 선택하면 된다. 나는 편하게 콘솔에서 접속하였다.!
1. ECS Agent 설치
# ECS Agent 패키지 다운로드
curl -O https://s3.ap-northeast-2.amazonaws.com/amazon-ecs-agent-ap-northeast-2/amazon-ecs-init-latest.x86_64.rpm
# 패키지 설치
sudo yum localinstall -y amazon-ecs-init-latest.x86_64.rpm
1. ECS Agent 설정
sudo vi /etc/ecs/ecs.config
i로 편집 모드에 들어가 아래 문장을 하나 넣고 :wq를 통해 vi를 닫늗다.
ECS_CLUSTER=kobaco-cluster <= 아까 만든 ECS 클러스터명
sudo vi /lib/systemd/system/ecs.service
위와 같이 편집모드에 들어가 Unit 부분의 마지막 줄을 아래처럼 수정한다.
After=cloud-final.service
2. Docker 설치
# Docker 설치
sudo yum update -y
sudo yum install -y docker
# Docker 자동 실행 설정
sudo systemctl enable docker
sudo systemctl start docker
# Docker 실행 확인
sudo systemctl status docker
3. ECS Agent 실행
sudo systemctl start ecs
sudo systemctl enable ecs
# ECS 실행 상태 확인
sudo systemctl status ecs
아래와 같이 curl 요청으 보내서 확인할 수도 있다.
curl http://localhost:51678/v1/metadata
정상적인 출력 예시
{
"Cluster": "kobaco-cluster",
"ContainerInstanceArn": "arn:aws:ecs:ap-northeast-2:XXXXXXXXXXXX:container-instance/XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX",
...
}
4️⃣ 연결된 컨테이너 인스턴스 확인
이제 다음시간에는 배포를 실시해보겠다~!