목차
0. 이전 글/영상
- FastAPI로 Hello World 를 출력해 보자. (영상링크)
- 쿠버네티스 기본적인 사용방법
- Dockerhub에 이미지 올리기
1. Pycharm Pro에 쿠버네티스 플러그인 세팅
가장 먼저, IDE에 쿠버네티스 환경을 세팅해야 한다.
그동안 터미널을 이용해 작업을 했지만..... IDE를 적극 사용하도록 하자.
참고로 Pycharm pro에서만 할 수 있다. 도커를 쓰는 순간, 커뮤니티버전은 버려야한다.
프로 버전은 1년에 $108.90 이다. ㅠㅠㅠㅠㅠㅠ 아젠장.... 쿠버네티스 처음 공부하면서 1달치를 끊어서 1달안에 개발을 할 수 있을리가 없다. 1년으로 해주자.
순서는 아래와 같다.
1.1. 쿠버네티스 플러그인 설치
- PyCharm을 열고 Settings 로 이동
- Plugins 섹션을 선택하고, 검색 바에서 "Kubernetes"를 검색
- "Kubernetes" 플러그인을 찾아 Install 버튼을 클릭
2.2. 쿠버네티스 클러스터 설정
이제 PyCharm에서 쿠버네티스 클러스터와 연결을 설정할 수 있습니다.
- Settings로 이동
- Kubernetes 탭에서 세팅을 해준다.
2.3. 클러스터 확인 및 관리
- 서비스에서 minikube를 추가해 준다. 특별한 세팅을 해주지 않았다면, 디폴트 디렉토리에서 불러오면 될 것이다.
- 클러스터 설정이 완료되면, Kubernetes 탭에서 연결된 클러스터의 리소스를 볼 수 있다. 여기서 파드, 서비스, 디플로이먼트 등의 상태를 확인하고 관리할 수 있다. 명령어를 치지 않아도, pod가 바로 확인 가능하다. 너무 시원시원하다.
2. Pod 생성
필자는 쿠버네티스용 git 리포지토리를 따로 만들었다.
이곳에 fastapi_pod.yaml를 만들어 실행할 것이다.
fastapi_pod.yaml만 만들어두고 실행은 Dockerhub에 미리 만들어 둔 Docker이미지를 다운받아서 실행한다.
Docker 이미지를 만드는 방법은 아래에서 설명한다.
fastapi_pod.yaml 에는 데이터베이스의 주소와 비밀번호 정보가 들어간다. 그러므로 Secret을 사용해 민감한 정보를 관리해고, pod에 주입시켜 주자.
Secret을 생성해 보자.
kubectl create secret generic db-secret --from-literal=password=your-db-password
다음으로 fastapi_pod.yaml 파일을 작성해준다.
apiVersion: v1
kind: Pod
metadata:
name: fastapi-pod
spec:
containers:
- name: fastapi-container
image: your-fastapi-image
env:
- name: DATABASE_PASSWORD
valueFrom:
secretKeyRef:
name: db-secret
key: password
3. Dockerfile 작성
컨테이너 환경을 정의한다. (출처: FastAPI 공식문서)
이 파일을 이용해 Dockerhub에 이미지를 업로드 한다.
상세 설정은 조금 변경해 주자.
#
FROM python:3.9 as requirements-stage
#
WORKDIR /tmp
#
RUN pip install poetry
#
COPY ./pyproject.toml ./poetry.lock* /tmp/
#
RUN poetry export -f requirements.txt --output requirements.txt --without-hashes
#
FROM python:3.9
#
WORKDIR /code
#
COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt
#
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
#
COPY ./app /code/app
#
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "80"]
5. 개발 및 테스트 환경 구축
일반적으로, 개발을 할 때에는 Dockerfile로 실행하고 디버깅 하지는 않는다. 그러므로 Dockerfile에서 사용한 poetry를 로컬 컴퓨터에 그대로 설치해준다.
'MLOps' 카테고리의 다른 글
쿠버네티스(kubenetes)에 데이터베이스 추가하기 (2) | 2024.03.28 |
---|---|
쿠버네티스(Kubernetes) 기본적인 사용 방법 (1) | 2024.03.28 |
쿠버네티스(Kubernetes) 설치와 실행 방법 (0) | 2024.03.19 |
쿠버네티스(Kubernetes)란! 왜 사용하는 것일까? (0) | 2024.03.19 |
MLflow 처음 시작하기 (0) | 2024.03.12 |