这是一个简单的全栈应用程序,前端使用 React,后端使用 Python (Flask),数据库使用 SQLite。 所有服务都容器化并通过 Kubernetes 部署。
frontend/: React 前端应用代码和 Dockerfile。backend/: Python Flask 后端应用代码和 Dockerfile。kubernetes/: Kubernetes 部署和服务 YAML 清单。deploy.sh: (可选) 用于构建镜像、推送镜像(如果需要)和应用 K8s 清单的脚本。
- Docker 已安装并运行。
- Kubernetes 集群已配置 (例如 Minikube, Kind, Docker Desktop K8s, 或云提供商的 K8s)。
kubectl已安装并配置为指向您的集群。- (可选) 一个 Docker 镜像仓库 (如 Docker Hub) 来推送镜像,如果你的 K8s 集群无法直接访问本地 Docker 守护进程的镜像。
-
设置镜像名称 (重要!): 打开
kubernetes/backend-deployment.yaml和kubernetes/frontend-deployment.yaml, 将image: your-dockerhub-username/my-backend:latest和image: your-dockerhub-username/my-frontend:latest替换为你的实际 Docker Hub 用户名或你使用的其他镜像仓库地址。 如果你在本地 K8s (如 Minikube) 中测试,并且可以直接使用本地构建的镜像,可以简化镜像名称为my-backend:latest和my-frontend:latest,并确保 Minikube 的 Docker 环境与本地一致 (例如,通过eval $(minikube -p minikube docker-env))。 -
构建 Docker 镜像:
# 进入 backend 目录构建后端镜像 cd backend docker build -t your-dockerhub-username/my-backend:latest . cd .. # 进入 frontend 目录构建前端镜像 cd frontend docker build -t your-dockerhub-username/my-frontend:latest . cd ..
-
(可选) 推送镜像到仓库: 如果你的 K8s 集群不能直接访问本地构建的镜像,你需要推送到一个镜像仓库。
docker push your-dockerhub-username/my-backend:latest docker push your-dockerhub-username/my-frontend:latest
-
应用 Kubernetes 清单:
# 创建命名空间 (可选,但推荐) kubectl apply -f kubernetes/namespace.yaml # 部署后端 kubectl apply -f kubernetes/backend-deployment.yaml kubectl apply -f kubernetes/backend-service.yaml # 部署前端 kubectl apply -f kubernetes/frontend-deployment.yaml kubectl apply -f kubernetes/frontend-service.yaml # (可选) 如果你配置了 Ingress 控制器并想使用 Ingress # kubectl apply -f kubernetes/ingress.yaml
或者,如果
deploy.sh脚本已配置好,可以直接运行:# chmod +x deploy.sh # ./deploy.sh
-
检查部署状态:
kubectl get pods -n my-app-namespace kubectl get services -n my-app-namespace
等待 Pods 变为
Running状态。 -
访问应用: 如果
frontend-service的类型是LoadBalancer,并且你的 K8s 环境支持它,你可以通过外部 IP 访问:kubectl get svc frontend-service -n my-app-namespace -o jsonpath="{.status.loadBalancer.ingress[0].ip}"如果类型是
NodePort,或者你在 Minikube 中:minikube service frontend-service --url -n my-app-namespace
然后在浏览器中打开返回的 URL。
cd frontend
npm install
npm start # 启动开发服务器cd backend
python -m venv venv
source venv/bin/activate # 或者 venv\Scripts\activate on Windows
pip install -r requirements.txt
flask run --host=0.0.0.0 # 或者 python -m app.main