## 🚀 CI/CD 流程 ### Gitea Actions Workflow - 自动构建 Backend 和 Frontend Docker 镜像 - 推送镜像到 Harbor (192.168.1.83:8080) - 自动部署到 Kubernetes learn namespace - 支持滚动更新和健康检查 ### Docker 镜像 - **Backend**: Python 3.11 + FastAPI - 多阶段构建优化 - 健康检查探针 - 生产环境优化 - **Frontend**: Node 18 + Vue 3 + Nginx - 多阶段构建 - Gzip 压缩 - 静态资源缓存优化 ## ☸️ Kubernetes 部署 ### 基础设施 - Namespace: learn - PostgreSQL 15 (持久化存储) - ConfigMap 和 Secret 管理 - Service 和 Ingress 配置 ### 应用部署 - Backend: 2 副本,资源限制 - Frontend: 2 副本,Nginx 服务 - 健康检查:Liveness + Readiness Probes - 滚动更新策略 ### 访问配置 - Ingress: pager.learn.local - Frontend: http://pager.learn.local - API: http://pager.learn.local/api - API Docs: http://pager.learn.local/api/docs ## 📊 Grafana 监控 ### ServiceMonitor - Prometheus 自动服务发现 - Backend、Frontend、PostgreSQL 指标采集 - 30s 采集间隔 ### Dashboard 面板 - HTTP 请求速率和响应时间 - Pod CPU 和内存使用 - 数据库连接数 - 错误率 (4xx/5xx) - Pod 重启次数 - 磁盘使用率 ## 📦 新增文件 ### Docker - `backend/Dockerfile` - 后端镜像构建 - `frontend/Dockerfile` - 前端镜像构建 - `frontend/nginx.conf` - Nginx 配置 - `.dockerignore` - 构建优化 ### CI/CD - `.gitea/workflows/ci-cd.yaml` - Gitea Actions 配置 ### Kubernetes - `k8s/namespace.yaml` - Namespace 定义 - `k8s/configmap.yaml` - 应用配置 - `k8s/secret.yaml` - 敏感信息 - `k8s/postgres.yaml` - PostgreSQL 部署 - `k8s/deployment.yaml` - 应用部署 - `k8s/service.yaml` - Service 配置 - `k8s/ingress.yaml` - Ingress 路由 ### 监控 - `k8s/monitoring/servicemonitor.yaml` - Prometheus 采集 - `k8s/monitoring/grafana-dashboard.json` - Dashboard 定义 - `k8s/monitoring/install-dashboard.sh` - 安装脚本 ### 文档和脚本 - `CICD_DEPLOY.md` - 完整部署文档 - `deploy.sh` - 快速部署脚本 ## 🔧 配置要求 ### Gitea Secrets - `HARBOR_PASSWORD`: Harbor 密码 - `KUBECONFIG`: K8s 配置 (base64 编码) ### Harbor - 项目: pager - 认证: admin/admin123 ### Kubernetes - 版本: 1.24+ - Namespace: learn - Ingress Controller: nginx ## 📝 使用说明 ### 自动部署 ```bash git push origin master # 自动触发 CI/CD 流程 ``` ### 手动部署 ```bash ./deploy.sh ``` ### 查看状态 ```bash kubectl get pods -n learn kubectl logs -f -l app=pager-backend -n learn ``` ### 监控 1. 部署 ServiceMonitor: `kubectl apply -f k8s/monitoring/` 2. 安装 Grafana Dashboard: `cd k8s/monitoring && ./install-dashboard.sh` ## 🎯 特性 - ✅ 自动化 CI/CD 流程 - ✅ Docker 多阶段构建优化 - ✅ Kubernetes 高可用部署 - ✅ 滚动更新零停机 - ✅ 健康检查和自动恢复 - ✅ Prometheus + Grafana 监控 - ✅ 完整的故障排查文档 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
38 lines
1.1 KiB
Nginx Configuration File
38 lines
1.1 KiB
Nginx Configuration File
server {
|
|
listen 80;
|
|
server_name localhost;
|
|
root /usr/share/nginx/html;
|
|
index index.html;
|
|
|
|
# Gzip 压缩
|
|
gzip on;
|
|
gzip_vary on;
|
|
gzip_min_length 1024;
|
|
gzip_types text/plain text/css text/xml text/javascript application/x-javascript application/xml+rss application/json application/javascript;
|
|
|
|
# 前端路由支持
|
|
location / {
|
|
try_files $uri $uri/ /index.html;
|
|
}
|
|
|
|
# API 代理(开发环境可选)
|
|
location /api {
|
|
proxy_pass http://pager-backend:8888;
|
|
proxy_set_header Host $host;
|
|
proxy_set_header X-Real-IP $remote_addr;
|
|
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
|
|
proxy_set_header X-Forwarded-Proto $scheme;
|
|
}
|
|
|
|
# 静态资源缓存
|
|
location ~* \.(jpg|jpeg|png|gif|ico|css|js|svg|woff|woff2|ttf|eot)$ {
|
|
expires 1y;
|
|
add_header Cache-Control "public, immutable";
|
|
}
|
|
|
|
# 安全头
|
|
add_header X-Frame-Options "SAMEORIGIN" always;
|
|
add_header X-Content-Type-Options "nosniff" always;
|
|
add_header X-XSS-Protection "1; mode=block" always;
|
|
}
|