오늘은 장고를 로컬에서만 만들다가 아마존 eks를 이용해서 상시 접근 가능한 원격서버를 구축하는 흐름을 머릿속에 넣어보았다.
준비물
- AWS 계정 및 사용가능한 EKS, ECR, EC2 서비스
- Docker
- kubectl (eks 관리할 수 있도록 연결해놓기)
도커 이미지 빌드 및 푸쉬
Dockerfile 준비. dockerfile에 컨테이너 이미지 빌드 설정을 해놓는다.
FROM python:3.9
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["python", "manage.py", "runserver", "0.0.0.0:8000"]
그리고 다음 명령어를 이용해 도커 이미지를 빌드한다.
docker build -t django-server .
다음 명령어를 이용해 도커 이미지를 ECR 리포지토리에 푸쉬한다.
docker push django-server:latest
eks deployment
Deployment yaml 파일과 service yaml 파일을 만들어서 장고 컨테이너 배포 설정을 해준다. deployment 예시로는 다음과 같은 파일이 있을 수 있다.
apiVersion: v1
kind: Service
metadata:
name: django-service
spec:
selector:
matchLabels:
app: django
ports:
- name: http
protocol: TCP
port: 80
targetPort: 8000
yaml 파일이 준비되었다면 kubectl apply 명령어를 이용해서 deployment.yaml 및 servcie를 생성한다.
kubectl apply -f deployment.yaml
kubectl apply -f service.yaml
deployment 되었는지 확인하기
다음 명령어를 사용해 장고 pod가 실행 중인지 확인할 수 있다.
kubectl get pods
혹은 웹브라우저에서 해당 서비스 주소를 입력해서 확인할 수도 있다.
혹은 Rancher 이용해서 배포된 서비스 상태를 확인할 수도 있다.