0

Hướng Dẫn Triển Khai Ứng Dụng Python Trên Kubernetes Local (Minikube)

Giới Thiệu

Trong bài viết này, mình sẽ hướng dẫn cách triển khai một ứng dụng Python backend đơn giản (sử dụng Flask) lên Kubernetes local bằng Minikube. Đây là bước đầu tiên để làm quen với môi trường Kubernetes thực tế khi phát triển ứng dụng container hoá.

1. Chuẩn Bị Môi Trường

Bạn cần cài đặt trước:

Docker: https://docs.docker.com/get-docker/

Minikube: https://minikube.sigs.k8s.io/docs/start/

kubectl: https://kubernetes.io/docs/tasks/tools/

2. Tạo Ứng Dụng Python

Tạo thư mục dự án:

mkdir -p python-k8s-app/src && cd python-k8s-app/src

Tạo file app.py:

from flask import Flask

app = Flask(__name__)

@app.route("/")
def home():
    return "Hello from Kubernetes Python App!"

if __name__ == "__main__":
    app.run(host="0.0.0.0", port=5000)

Tạo file requirements.txt:

Flask==2.2.5

3. Tạo Dockerfile

Trong thư mục src, tạo file Dockerfile

# Dockerfile
FROM python:3.10-slim

WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .

CMD ["python", "app.py"]

Build image:

cd ..
eval $(minikube docker-env)   # Sử dụng Docker của Minikube
docker build -t python-k8s-app ./src

4. Tạo File Triển Khai K8s

Tạo thư mục k8s và thêm 2 file cấu hình:

mkdir k8s && cd k8s

deployment.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: python-app
spec:
  replicas: 2
  selector:
    matchLabels:
      app: python-app
  template:
    metadata:
      labels:
        app: python-app
    spec:
      containers:
        - name: python-app
          image: python-k8s-app
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 5000

service.yaml

apiVersion: v1
kind: Service
metadata:
  name: python-app-service
spec:
  selector:
    app: python-app
  ports:
    - protocol: TCP
      port: 80
      targetPort: 5000
  type: NodePort

5. Triển Khai Trên Minikube

Khởi động Minikube nếu chưa chạy:

minikube start

Triển khai ứng dụng:

kubectl apply -f deployment.yaml
kubectl apply -f service.yaml

Kiểm tra:

kubectl get pods
kubectl get svc

6. Truy Cập Ứng Dụng

Tìm NodePort (ví dụ 30000–32767):

kubectl get service python-app-service

Sau đó truy cập:

http://localhost:<nodePort>

Hoặc nhanh hơn:

minikube service python-app-service

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí