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