1 . Dockerfile
vi Dockerfile
FROM python:3.8
ENV FLASK_APP=main
COPY . /usr/src/main/
WORKDIR /usr/src/main
RUN pip3 install -r requirements.txt
CMD ["flask", "run", "--host=0.0.0.0", "--port=5000"]
EXPOSE 5000/tcp
docker run -it --name myweb -p 5000:5000 flask:testv1
1 . ml-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: ml-deploy
spec:
replicas: 2
selector:
matchLabels:
tier: ml
template:
metadata:
name: ml-deploy
labels:
tier: ml
spec:
containers:
- name: ml-deploy
image: suhwan11/test1:flaskv2 #위에서 도커라이징한 이미지
ports:
- containerPort: 5000
2 . ml-svc.yaml
apiVersion: v1
kind: Service
metadata:
name: ml-svc
spec:
type: NodePort
ports:
- port: 80
targetPort: 5000
nodePort: 31117
selector:
tier: ml
3 . ml-ing.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: ml-ing
annotations:
kubernetes.io/ingress.class: alb
alb.ingress.kubernetes.io/scheme: internet-facing
alb.ingress.kubernetes.io/target-type: instance
spec:
rules:
- http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: ml-svc
port:
number: 80
1 . nginx.conf
. . .
location /mlapp {
proxy_pass <ML Backend주소>;
proxy_buffer_size 128k;
proxy_buffers 4 256k;
proxy_busy_buffers_size 256k;
}
. . .
. . .
"/mlapp":{
target: "<ML Backend주소>/mlapp/",
rewrite: (path)=>path.replace(/^\/mlapp/,""),
},
. . .
📒 기존의 Backend 코드에서 DB에 대한 Warning을 해결하기 위해 application.yaml파일에 open-in-view: false 를 추가하였는데 오히려 이것이 역효과가 나서 DB에 대한 쿼리 오류가 발생하였고, Frontend의 요청에서 에러가 발생했다.
📒 브라우저에서 새로 배포한 웹을 테스트할때 이전에 캐시된 웹 때문에 새로 배포한 웹에 문제가 없음에도 이전에 웹이 그대로 남아있어서 오류가 해결 안된것처럼 보일 수 있다.
-> Ctrl + Shift + R 을 누르면 새로 배포한 웹의 스크립트로 바꿔준다.