flask server - yeardream-de-project-team4/k8s_project GitHub Wiki
구조
nginx(Local Nginx) >> ingress-controller >> ingress >> service >> deployment(nginx, flask)
선행 사항
docker hub 가입, docker 설치,
ingress-controller 설치(nginx‐ingress‐controller & metalLB 참조),
flask directory(git의 flask directory 참조:https://github.com/yeardream-de-project-team4/k8s_project)
파일 작성 순서
flask Dockerfile 작성, nginx Dockerfile 작성 >>
docker image build를 통한 flask image, nginx image 생성 >> docker hub [Repositories]에 push >>
flask-daploy.yaml 작성 > flask-service.yaml 작성 > flask-ingress.yaml 작성
# docker 설치 확인
docker --version
# directory 생성(git의 flask directory 참조)
mkdir flask
cd flask
mkdir flaskapp
mkdir nginxtest
cd flaskapp
mkdir myapp
cd myapp
# myapp에 main.py 작성(git의 flask/flaskapp/myapp directory 참조)
vim main.py
# flask/flaskapp directory로 이동
cd flask/flaskapp
# flaskapp에 Dockerfile 작성(git의 flask/flaskapp directory 참조)
vim Dockerfile
# flaskapp directory에 Dockerfile, myapp 확인
ls
# Docker Image build & push(pwd: /flask/flaskapp)
docker login
docker build . -t [dokcer hub id]/[image name]:[tag name]
docker push [dokcer hub id]/[image name]:[tag name]
# flask/nginxtest directory로 이동
cd ..
cd flask/nginxtest
# flaskapp에 Dockerfile, default.conf 작성(git의 flask/nginxtest directory 참조)
vim Dockerfile
vim default.conf
# nginxtest directory에 Dockerfile, default.conf 확인
ls
# Docker Image build & push(pwd: /flask/nginxtest)
docker login
docker build . -t [dokcer hub id]/[image name]:[tag name]
docker push [dokcer hub id]/[image name]:[tag name]
# flask namespace 생성
kubectl create namespace flask
# Kubernetes에 flaskapp 실행을 위한 yaml 작성(git의 flask/k8s directory 참조)
vim flask-deploy.yaml
vim flask-service.yaml
vim flask-ingress.yaml
# deployment 실행
kubectl apply -f flask-deploy.yaml -n flask
# deployment run 확인
kubectl get all -n flask
# service 실행
kubectl apply -f flask-service.yaml -n flask
# service 실행 확인
kubectl get all -n flask
# ingress 실행
kubectl apply -f flask-ingress.yaml -n flask
# ingress 확인
kubectl get ingress -n flask
# [EXTERNAL-IP 주소] 확인
kubectl get all -n nginx-ingress
Local Nginx 설정 변경
# active 상태 확인
sudo systemctl status nginx
# defalut 파일 확인
sudo -i
cd /etc/nginx/sites-enabled
# 51번째 라인 try files $uri $uri/ =404 주석처리
#location / {} 가로 안에(51번째 라인 주석 아래) proxy_pass http://[EXTERNAL-IP주소:80]; 입력 후 저장
sudo vim default
# test 확인
nginx -t
# 아래 두 개가 SUCCESS 뜨면 OK
# nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
# nginx: configuration file /etc/nginx/nginx.conf test is successful
# 재시작 및 상태 확인
systemctl restart nginx
systemctl status nginx
# 종료
exit
AWS 인스턴스 퍼블릭IP 주소 확인
퍼블릭IP주소/flasktest01 입력을 통해 'Hellow, world' 확인