리셋 되지 말자

[kubernetes] Django 서비스하기 본문

오케스트레이션

[kubernetes] Django 서비스하기

kyeongjun-dev 2021. 2. 22. 18:55

lsjsj92.tistory.com/578

 

쿠버네티스(kubernetes) example - Python Django 웹 페이지 배포하기

포스팅 개요 이번 포스팅은 쿠버네티스(kubernetes)를 활용하는 방법인 예시(example)를 보여주는 글입니다. 특히, 쿠버네티스(kubernetes)를 활용하여 Python Django를 deploy(배포)하는 example입니다. 본 글은.

lsjsj92.tistory.com

이수진 님의 블로그를 참고로 하여 기록하는 포스팅입니다. 해당 링크로 가셔서 똑같이 따라해도 전혀 문제가 없습니다!

 

1. Django project 생성

$ django-admin startproject kkjDjango
$ cd kkjDjango
$ ls
kkjDjango  manage.py

 

2. 필요한 파일 생성

- Dockerfile

FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
COPY requirements.txt /code/
RUN pip install -r requirements.txt
COPY . /code/

RUN python manage.py migrate

CMD python manage.py runserver 0.0.0.0:8000

 

- requirements.txt

Django==3.1.3

requirements.txt 파일에 설정된 Django 버전과, django-admin으로 프로젝트를 생성할 때 사용한 Django 버전을 일치시키면 좋음

 

3. docker image 빌드

 

docker build -t kubernetes-django-kkj .

 

생성된 docker 이미지 확인

$ docker images | grep django
kubernetes-django-kkj                     latest                                                  55033a51450b   21 minutes ago   927MB

 

4. yml 파일 생성

- deployment.yml

$ cat deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kubernetes-django-deployment
  labels:
    app: kubernetes-django-kkj
spec:
  replicas: 1
  selector:
    matchLabels:
      app: kubernetes-django-kkj
  template:
    metadata:
      labels:
        app: kubernetes-django-kkj
    spec:
      containers:
      - name: kubernetes-django-kkj
        image: kubernetes-django-kkj
        imagePullPolicy: IfNotPresent
        ports:
        - containerPort: 8000

 

5. 쿠버네티스에 yml 파일 적용

kubectl apply -f deployment.yml

 

pod 확인

$ kubectl get pods
NAME                                           READY   STATUS    RESTARTS   AGE
kubernetes-django-deployment-df5f9466d-jn6d8   1/1     Running   0          15m

 

6. NodePort로 노출(로컬에서만 되도록)

kubectl expose deploy kubernetes-django-deployment --type=NodePort

 

service 확인

$ kubectl get service
NAME                           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
kubernetes                     ClusterIP   10.96.0.1       <none>        443/TCP          7h9m
kubernetes-django-deployment   NodePort    10.100.13.172   <none>        8000:30694/TCP   14m

 

7. 쿠버네티스 연동 확인 - 웹페이지 접속

nodeport로 설정된 30694로 접속(다를 수도 있음)

Comments