사전 설치
- aws cli
- docker
Fargate 실행 순서
- ECR 레포지터리 생성하고 애플리케이션 이미지 Push 합니다
- ECS에서 작업 정의를 합니다
- 클러스터를 구성합니다
1. ECR 레포지터리 생성하고 이미지 Push
먼저 이미지를 올릴 레포지터리를 생성합니다. 레포지터리 이름 형식은 <namespace>/<repo-name> 이며, 소문자만 가능합니다.
사용자가 Docker 컨테이너 이미지를 손쉽게 저장, 관리 및 배포할 수 있게 해주는 완전관리형 Docker 컨테이너 레지스트리입니다. 쉽게 얘기하면 Fargate를 포함한 아마존의 컨테이너 서비스에서 사용하기 위한 도커 이미지 저장소입니다.
※ 레포지터리를 퍼블릭으로 생성하니까 접속하는 과정에서 자꾸 아래와 같은 에러가 발생했습니다. 그래서 프라이빗으로 다시 생성했습니다 ;; 이유는 모르겠네연
could not connect to the endpoint url: "https://api.ecr-public.ap-northeast-2.amazonaws.com/" error: cannot perform an interactive login from a non tty device
푸시 명령 보기를 누르면 친절하게도 레포지터리 접속을 하고 이미지를 저장할 수 있는 명령어를 단계별로 알려줍니다
2. ECS > 작업정의
등록한 이미지를 바탕으로 작업을 정의합니다. 작업(Task)은 같이 실행되는 한 개 이상의 컨테이너의 집합체를 말합니다. 작업 정의를 통해 하나 이상의 컨테이너 실행될 때 컨테이너의 사용할 도커 이미지 사용할 CPU, 메모리, 네트워크 등을 설정할 수 있습니다.
역할에 경우 aws에서 생성해주는 역할을 넣습니다
인스턴스는 메모리 0.5같은 크기가 없지만 fargate에서는 가능합니다
그 다음으로는 컨테이너 추가를 합니다
ECR에서 해당 이미지의 URL을 복사합니다
복사한 url을 이미지에 붙여넣기 합니다
제가 올린 컨테이너는 80번 포트를 사용하므로 포트를 80으로 매핑해주었습니다
3. ECS > 클러스터
- 클러스터 생성
Fargate이므로 네트워킹 전용으로 클러스터를 생성하겠습니다
- 서비스 생성
클러스터를 생성 확인을 한 후 해당 클러스터를 클릭하면 해당 클러스터에 서비스를 작성할 수 있습니다.
AWS ECS에서 서비스는 작업 정의에서 정의된 작업들을 실제로 운용하는 말 그대로 서비스 단위라고 할 수 있습니다.
클러스터 내에서는 각각의 서비스들은 작업 정의에서 정해진 작업들을 기반으로 네트워크 설정, 가용성 설정 등을 하여 실제 서비스를 구현합니다.
단계 1: 서비스 구성
fargate 선택하고 작업 레플리카는 2개를 생성하도록 하겠습니다
단계 2: 네트워크 구성
자동할당 퍼블릭 IP는 프라이빗 서브넷에 생성하면 NAT를 통하므로 Disable이 가능하지만 저는 퍼블릭에 생성하므로 Enable 해야 합니다.
스크롤을 내리면 ELB 설정을 할 수 있습니다. 상태 검사 유예기간은 0으로 설정하면 조금만 늦게 생성되어도 unhealth 처리가 되니 20으로 설정하겠습니다.
Load Balancing은 타겟 그룹을 설정하지 않은 미리 작성된 Application Load Balancing을 사용하였습니다.
fargate이므로 타겟 그룹의 대상 유형은 반드시 instance가 아닌 ip로 설정해놓아야 합니다.
서비스를 생성하니 레플리카 2개가 생성되면서 running 상태가 되었습니다.
alb의 타겟그룹을 보면 넣은 적 없는 레플리카 IP가 들어가 있습니다
ALB주소를 입력하면 webapp이 나옵니다 !!
수고하셨습니다.
참고
https://www.youtube.com/watch?v=bEr_98NRlzc
https://neo-blog.tistory.com/42
https://yunsangjun.github.io/cloud/2019/06/23/aws-ecs-03.html
'DevOps > Kubernetes' 카테고리의 다른 글
[EKS] AWS EBS 볼륨을 K8S PV로 사용 (0) | 2021.12.22 |
---|---|
[EKS] alb-ingress-controller path 기반 라우팅 404 에러 (0) | 2021.12.20 |
[EKS] alb-ingress-controller 사용해보기 (0) | 2021.08.31 |
[EKS] nginx-ingress-controller, NLB 사용해보기 (3) | 2021.08.25 |
쿠버네티스(2) - 컨트롤러 ReplicaSet, Deployments (0) | 2021.08.19 |