일단 저희가 이전에 만든 django이미지와 nginx이미지를 registry에 등록한다고 해 봅시디. 그리고 ECS은 Elastic Container Service이고 ECR은 Elastic Container Registry인데 ECS안에 ECR이 포함되어 있는 형식입니다. 그러면 ECS가 우리가 registry에 등록해둔 이미지를 다양한 EC2인스턴스에 쏴주는 역할을 하게 됩니다. 이러한 컨테이너 배포방식이 옵션 1입니다. 그리고 우리가 Docker Registry보다 ECR을 사용해야 하는 이유가 ECS호환이 잘 되어 있기 때문입니다. 또한 ECS을 오토스케일링 기능을 지원가능하게 하기 위함입니다.
하지만 이는 매우 고전적인 방식입니다. 그리고 노가다가 매우 들어간다는 관리 이슈가 생기게 됩니다. 여기서는 우리가 만든 이미지도 관리해야 하고, ECR안에 있는 이미지도 관리해야 하고, 서버안에 있는 콘테이너도 우리가 관리해야 합니다. ECR의 이미지를 활용해서 오토스케일링을 하게되는 것도 매우 번거롭게 됩니다.
AWS Fargate를 활용하면 매우 쉬워집니다. 바로 실습을 할것인데, AWS CLI에 대해 간단히 살펴보도록 하겠습니다.
이전에는 모두 인스턴스를 클릭을 통해서 GUI를 통해서 생성했습니다. 하지만 CLI상에서 AWS CLI을 자동화 스크립트를 짤 수 있다는 장점이 있게 됩니다.
실습 ( AWS ECR에 컨테이너 업로드 )
우선 EC2인스턴스를 하나 만든다음에 우리가 기존에 계속 사용하던 Django-Deploy레포지터리를 클로닝 해 옵니다. 그리고 아래의 명령어를 쭉 치면서 docker를 설치하고 권한을 조절해 줍니다.
$curl -fsSL https://get.docker.com/ | sudo sh
$sudo usermod -aG docker $USER
$mkdir docker-server
$vim Dockerfile
Dockerfile은 기존의 django image를 만들 떄와 똑같이 작성해 줍니다.
그리고 빌드하는 명령어를 아래와 같이 쳐줍니다.
$docker build -t ecr/django
$docker tag 154309361967.dkr.ecr.ap-northeast-2.amazonaws.com/fargate_django
그리고 후자 명령어를 쳐주기 전에 ECS에 들어가 ECR의 Repositories를 하나 만들어 줍니다. fargate_django라는 이름으로 만들어 줍니다.
그리고 이 레포지토리에 ecr/django image를 push하기 위해 aws-cli를 간단히 깔고 admin사용자를 IAM을 통해 만들어 주도록 하겠습니다.
그리고 aws configure를 통해 access_id와 secret_key를 입력해 줍니다. 그러면 aws-cli를 사용할 수 있으실 겁니다.
그후에는 이제 ecr에 로그인하는 과정을 거쳐보도록 하겠습니다 아래의 명령어를 쳐주세요
$aws ecr get-login --no-include-email --region ap-northeast-2
위와 같이 명령어를 친 결과를 복사해서 바로 쳐주면 로그인에 성공하게 됩니다.
그 후, ecr/django이미지를 바로 위에서 만든 이미지를 아래 명령어를 통해 push해주는 과정을 거치도록 하겠습니다.
$docker push 154309361967.dkr.ecr.ap-northeast-2.amazonaws.com/fargate_django
그리고 ECR을 확인해서 잘 push되었는지 확인해 보겠습니다.
또한 ECS는 요금이 매우 비싸므로 다음 실습까지만 하고 바로 삭제해 주도록 하겠습니다.
'DevOps > AWS Architecture' 카테고리의 다른 글
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Docker Compose를 활용한 배포 (0) | 2022.07.06 |
---|---|
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - (인프라) AWS Fargate을 통한 배포 (0) | 2022.07.05 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Nginx Docker Build (0) | 2022.07.05 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - Docker Django Build (0) | 2022.07.04 |
[ DevOps ] - AWS 기반 소규모 & 중규모 아키텍트 설계 - (인프라) Docker 개요 (0) | 2022.07.04 |