FastAPI
FastAPI 강좌 7강: Kubernetes를 활용한 애플리케이션 배포
atomicdev
2024. 10. 9. 10:44
728x90
Kubernetes를 활용한 애플리케이션 배포
강의 목표:
- Kubernetes 클러스터에 FastAPI 애플리케이션을 배포하는 방법을 학습한다.
- Kubernetes를 사용하여 애플리케이션을 스케일링하고, YAML 파일을 작성하여 배포하는 실습을 진행한다.
Kubernetes를 사용하여 FastAPI 애플리케이션을 배포하고 스케일링하는 과정
강의 세부 내용:
1. Kubernetes란?
- Kubernetes: 컨테이너화된 애플리케이션을 자동으로 배포, 스케일링, 운영하는 오픈소스 플랫폼입니다.
- Kubernetes는 애플리케이션의 가용성을 보장하고, 대규모 트래픽을 처리할 수 있도록 확장성을 제공합니다.
- 클러스터: Kubernetes는 클러스터 환경에서 애플리케이션을 실행합니다. 클러스터는 여러 개의 노드(서버)로 구성됩니다.
2. FastAPI 애플리케이션을 위한 Kubernetes 배포 구조
- Pod: Kubernetes에서 가장 작은 배포 단위로, 하나 이상의 컨테이너가 함께 실행됩니다.
- Service: 클러스터 내에서 Pod에 접근할 수 있는 네트워크 경로를 제공합니다.
- Deployment: 애플리케이션을 여러 Pod로 실행하고, 필요한 경우 스케일링(확장)을 지원합니다.
3. Kubernetes 환경 설정
필수 조건:
- Docker로 컨테이너 이미지 생성: FastAPI 애플리케이션을 먼저 Docker 이미지로 생성해 둬야 합니다.
docker build -t my_fastapi_app . docker push my_fastapi_app:latest # Docker Hub에 푸시
- Kubernetes 클러스터 설정:
- 클라우드 서비스(Kubernetes on AWS EKS, Google Kubernetes Engine 등)를 사용하거나, 로컬에서 Minikube를 이용해 Kubernetes 클러스터를 설정할 수 있습니다.
- Minikube 설치:
minikube start
4. Kubernetes 배포 YAML 파일 작성
예제 1: FastAPI 애플리케이션을 위한 Deployment와 Service 파일 작성
- Deployment 파일 (deployment.yaml): FastAPI 애플리케이션을 여러 Pod로 배포하는 구성입니다.
apiVersion: apps/v1 kind: Deployment metadata: name: fastapi-deployment spec: replicas: 3 # 애플리케이션을 3개의 Pod로 실행 selector: matchLabels: app: fastapi template: metadata: labels: app: fastapi spec: containers: - name: fastapi image: my_fastapi_app:latest # Docker 이미지 ports: - containerPort: 8000
설명:- replicas: Pod의 복제본 수를 지정합니다.
- image: Docker 이미지를 사용해 컨테이너를 생성합니다.
- Service 파일 (service.yaml): FastAPI 애플리케이션을 외부에서 접근할 수 있도록 Service를 설정합니다.
apiVersion: v1 kind: Service metadata: name: fastapi-service spec: selector: app: fastapi ports: - protocol: TCP port: 80 # 외부 요청 포트 targetPort: 8000 # FastAPI 애플리케이션 내부 포트 type: LoadBalancer # 외부 접근을 허용
설명:- type: LoadBalancer: 클러스터 외부에서 애플리케이션에 접근할 수 있도록 LoadBalancer를 사용합니다.
- port: 외부에서 접근하는 포트를 지정합니다(예: 80).
- targetPort: FastAPI 애플리케이션의 포트입니다(예: 8000).
5. Kubernetes 클러스터에 배포
Step 1: Kubernetes 배포 파일 적용
- Deployment와 Service 적용:
- kubectl 명령어를 사용해 YAML 파일을 적용하여 애플리케이션을 클러스터에 배포합니다.
kubectl apply -f deployment.yaml kubectl apply -f service.yaml
- kubectl 명령어를 사용해 YAML 파일을 적용하여 애플리케이션을 클러스터에 배포합니다.
- 배포 상태 확인:
- 배포된 Pod와 Service의 상태를 확인합니다.
kubectl get deployments kubectl get services kubectl get pods
- 배포된 Pod와 Service의 상태를 확인합니다.
Step 2: FastAPI 애플리케이션 접근
- Service의 IP 주소나 외부 로드 밸런서의 주소를 확인하여 애플리케이션에 접근합니다.
minikube service fastapi-service --url
- 브라우저에서 FastAPI 애플리케이션에 접근하여 응답을 확인합니다:
{ "message": "Hello, Kubernetes!" }
6. Kubernetes에서 FastAPI 애플리케이션 스케일링
Step 3: 애플리케이션 스케일링
- 애플리케이션 복제본 수 변경: Kubernetes에서 애플리케이션의 복제본 수를 동적으로 변경할 수 있습니다.
kubectl scale deployment fastapi-deployment --replicas=5
- 스케일링 확인: Pod가 5개로 확장되었는지 확인합니다.
kubectl get pods
마무리 및 추가 학습
- 이번 강의에서는 Kubernetes 클러스터에 FastAPI 애플리케이션을 배포하고 스케일링하는 방법을 학습했습니다.
- 배포와 서비스 구성을 YAML 파일로 작성하고, 실제로 클러스터에서 애플리케이션을 실행해 보았습니다.
- 다음 강의에서는 Kubernetes의 고급 기능과 모니터링 도구를 다룹니다.
728x90