배포하려면 다음 도구가 필요함:
aws ecr-public get-login-password --region us-east-1 | \
docker login --username AWS --password-stdin public.ecr.aws
✅ Login Succeeded
가 나오면 성공
docker build -t backend:latest .
docker build -t frontend:latest .
docker build -t database:latest .
✅ Dockerfile
이 있는 폴더에서 실행해야 함
docker tag backend:latest public.ecr.aws/<ECR_ID>/project-name/backend:latest
docker tag frontend:latest public.ecr.aws/<ECR_ID>/project-name/frontend:latest
docker tag database:latest public.ecr.aws/<ECR_ID>/project-name/database:latest
✅ 태그를 AWS Public ECR 주소로 변경
docker push public.ecr.aws/<ECR_ID>/project-name/backend:latest
docker push public.ecr.aws/<ECR_ID>/project-name/frontend:latest
docker push public.ecr.aws/<ECR_ID>/project-name/database:latest
✅ 푸시가 끝나면 ECR에서 확인 가능
eksctl create cluster --name my-cluster --region <AWS_REGION> --nodegroup-name my-nodes --node-type t3.medium --nodes 2
✅ EKS 클러스터를 생성 (약 10~15분 소요)
aws eks update-kubeconfig --region <AWS_REGION> --name my-cluster
kubectl get nodes
✅ 정상적으로 노드(Node)가 보이면 연결 완료
eks.yaml
)다음 YAML 파일을 만들고 Public ECR 이미지를 사용하도록 수정해야 함.
# Backend Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: backend
spec:
replicas: 1
selector:
matchLabels:
app: backend
template:
metadata:
labels:
app: backend
spec:
containers:
- name: backend
image: public.ecr.aws/<ECR_ID>/project-name/backend:latest
imagePullPolicy: Always
ports:
- containerPort: 8000
env:
- name: MONGO_URL
value: "mongodb://mongo-service:27017/"
✅ imagePullPolicy: Always
→ 항상 최신 이미지를 가져오도록 설정
kubectl apply -f eks.yaml
✅ EKS 클러스터에 배포 시작
kubectl get deployments
kubectl get pods
kubectl get services
✅ backend
, frontend
, database
등의 서비스가 정상적으로 실행 중인지 확인
kubectl get svc frontend-service
출력 예시:
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
frontend-service LoadBalancer 10.100.200.134 abc123.elb.amazonaws.com 8501:32111/TCP 5m
✅ 브라우저에서 http://abc123.elb.amazonaws.com:8501
로 접속
kubectl logs -l app=backend
✅ 백엔드 서비스가 정상 작동하는지 확인
kubectl logs job/insert-data
✅ 데이터 삽입 성공
메시지 확인
kubectl get jobs
출력 예시:
NAME COMPLETIONS DURATION AGE
insert-data 1/1 10s 2m
✅ COMPLETIONS
가 1/1
이면 정상 완료
kubectl scale deployment/backend --replicas=3
✅ 백엔드 서버를 3개로 늘림
# 최신 버전 이미지로 업데이트 후 재배포
kubectl set image deployment/backend backend=public.ecr.aws/<ECR_ID>/project-name/backend:v2
✅ 다운타임 없이 새로운 버전 배포