본문 바로가기
kubenetes

k8s flask web 수정하기

by kyeongseo.oh 2022. 4. 4.

실행 중인 flask web 페이지를 수정한다.

 

코드 수정 시 바로 반영하도록 ENV를 설정해준다.

[root@kw1 flaskImage]# cat Dockerfile
FROM python:3.6

# 현재 디렉토리의 모든 파일들을 컨테이너의 /app 디렉토리에 복사한다.
COPY . /app

# flask의 작업 위치가 /app이라는 뜻
WORKDIR /app

ENV FLASK_APP="/app/ksFlask.py"
ENV FLASK_DEBUG="True"

RUN pip install -r requirements.txt
EXPOSE 5000
CMD ["python", "/app/ksFlask.py"]

 

수정 시 바로 반영되게 debug=True를 추가함

from flask import Flask, render_template, url_for

app = Flask(__name__)

@app.route('/')
def web():
   return "kyeongseo's flask web page"

@app.route('/image')
def image():
   return render_template("index.html")

if __name__ == "__main__":
   app.run(host="0.0.0.0",debug=True)

 

index.html을 작성한다.

[root@kw1 flaskImage]# cat templates/index.html
<!doctype html>
<html>
  <head>
  </head>
  <body>
    <img src="{{ url_for('static', filename='./img.jpg') }}">
  </div>
  </body>
</html>

 

전체적인 구조는 아래와 같음

[root@kw1 flaskImage]# tree
.
├── Dockerfile
├── ksFlask.py
├── requirements.txt
├── static
│   ├── img.jpg
│   └── winter.gif
└── templates
    └── index.html

 

이미지를 빌드한다.

[root@kw1 flaskImage]# docker build -t modifytest .

 

 

local에서 build한 이미지를 사용하기 위해 --image-pull-policy=Never 옵션을 사용함

[root@kw1 flaskImage]# kubectl run modify --image=modifytest:latest --image-pull-policy=Never

 

NodePort type의 service를 생성한다.

[root@kw1 flaskImage]# kubectl expose pod modify --type=NodePort --port=5000
service/modify exposed

 

nodePort를 확인한다. (31885)

[root@kw1 flaskImage]# kubectl get svc
NAME              TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE
modify            NodePort    10.100.94.34    <none>        5000:31885/TCP   14s

 

web page를 확인한다.

172.30.1.145:31885 확인

172.30.1.145:31885/image 확인

 

위의 pod을 수정함.

 

exec 명령을 사용해 modify pod에 접속한다.

[root@kw1 flaskImage]# kubectl exec modify -it -- bash
root@modify:/app#

 

실행 중인 pod에 package 설치 링크를 참고해 vim을 설치한다.

 

img.jpg -> winter.gif로 index.html을 수정한다.

root@modify:/app# vim templates/index.html
root@modify:/app# cat templates/index.html
<!doctype html>
<html>
  <head>
  </head>
  <body>
    <img src="{{ url_for('static', filename='./winter.gif') }}">
  </div>
  </body>
</html>

 

ksFlask.py를 수정한다.

root@modify:/app# vim ksFlask.py
root@modify:/app# cat ksFlask.py
from flask import Flask, render_template, url_for

app = Flask(__name__)

@app.route('/')
def web():
   return "kyeongseo's flask web page modify page"

@app.route('/image')
def image():
   return render_template("index.html")

if __name__ == "__main__":
   app.run(host="0.0.0.0",debug=True)

 

web page가 수정되었는 지 확인한다.

172.30.1.145:31885 확인

 

172.30.1.145:31885/image 확인

 

댓글