Files
rails-app/DEPLOYMENT-SUMMARY.md

5.4 KiB
Raw Blame History

Rails 8.1 + SQLite GitOps部署项目总结

📋 项目信息

  • 项目名称: Rails 8.1 + SQLite应用
  • 部署日期: 2026-02-04
  • 集群: JPD K3s Cluster
  • 域名: r1.jpd.net3w.com

已完成的部署

1. Git仓库配置

2. K8s资源部署

  • Namespace: rails-app
  • Deployment: 使用ruby:3.3-slim镜像
  • Service: ClusterIP类型
  • Ingress: HTTP + HTTPS
  • PVC: 5Gi持久化存储

3. ArgoCD自动同步

  • Application已创建
  • 自动同步已启用
  • 连接到Gitea仓库

4. 网络配置

🔧 技术架构

部署方式

容器镜像: ruby:3.3-slim (官方镜像)
应用创建: 容器启动时自动创建Rails应用
数据库: SQLite3 (持久化到PVC)
副本数: 1 (SQLite单实例限制)

GitOps工作流

本地修改 → Git Push → Gitea → ArgoCD → K3s → 应用更新

资源配置

资源请求:
  memory: 512Mi
  cpu: 250m
资源限制:
  memory: 1Gi
  cpu: 1000m

健康检查

livenessProbe:
  initialDelaySeconds: 600  # 10分钟
  periodSeconds: 10
readinessProbe:
  initialDelaySeconds: 300  # 5分钟
  periodSeconds: 10

📝 当前状态

Pod状态

  • 新Pod正在启动安装依赖和创建Rails应用
  • 预计总启动时间: 5-10分钟
  • 当前阶段: 安装系统依赖和Ruby gems

启动流程

  1. 下载ruby:3.3-slim镜像
  2. 安装系统依赖build-essential, nodejs, npm等
  3. 🔄 安装Rails 8.1 gem
  4. 创建Rails应用结构
  5. 安装应用依赖
  6. 创建数据库
  7. 启动Rails服务器

🛠️ 管理工具

快速检查脚本

cd /home/fei/opk3s/app-project/001-rails8

# 查看状态
bash check-status.sh

# 查看日志
bash check-logs.sh

# 重新部署
bash deploy.sh

手动命令

# SSH到master节点
ssh fei@149.13.91.216

# 查看Pod
export KUBECONFIG=/etc/rancher/k3s/k3s.yaml
kubectl get pods -n rails-app

# 查看日志
kubectl logs -n rails-app -l app=rails-app -f

# 查看事件
kubectl get events -n rails-app --sort-by='.lastTimestamp'

💡 开发工作流

修改应用代码

编辑 k8s/deployment.yaml 中的args部分修改Rails应用逻辑。

提交并部署

cd /home/fei/opk3s/app-project/001-rails8
git add .
git commit -m "更新描述"
git push

自动同步

ArgoCD会在1-2分钟内自动检测变更并部署到集群。

🎯 验证步骤

1. 检查Pod状态

kubectl get pods -n rails-app

期望: Pod状态为Running且Ready (1/1)

2. 访问应用

curl http://r1.jpd.net3w.com

期望: 返回Rails欢迎页面HTML

3. 检查证书

kubectl get certificate -n rails-app

期望: 证书状态为Ready

4. 浏览器访问

打开浏览器访问: http://r1.jpd.net3w.com 期望: 显示Rails欢迎页面包含版本信息和Pod主机名

🐛 已知问题和解决方案

问题1: Pod频繁重启

原因: 健康检查初始延迟时间太短,应用还未启动完成 解决: 已增加livenessProbe延迟到600秒readinessProbe延迟到300秒

问题2: 启动时间长

原因: 需要安装大量系统依赖和Ruby gems 影响: 首次启动需要5-10分钟 优化方案: 可以构建自定义镜像预装依赖(未实施)

问题3: SQLite单实例限制

原因: SQLite不支持多实例并发写入 影响: 副本数固定为1无法水平扩展 替代方案: 如需高可用可切换到PostgreSQL或MySQL

📊 资源使用情况

存储

  • PVC: 5Gi (local-path)
  • 实际使用: 约500MiRails应用 + SQLite数据库

网络

  • Ingress: 2个HTTP + HTTPS
  • Service: 1个ClusterIP
  • 端口: 3000容器内部

计算

  • CPU请求: 250m
  • 内存请求: 512Mi
  • 预计实际使用: CPU 100-200m, 内存 300-400Mi

🔐 安全配置

HTTPS

  • Let's Encrypt自动证书
  • cert-manager自动续期
  • 90天有效期

网络隔离

  • 独立namespace
  • ClusterIP Service集群内部访问
  • Ingress控制外部访问

数据持久化

  • PVC持久化存储
  • 数据不会因Pod重启丢失

📚 相关链接

🎉 成功标志

当看到以下内容时,说明部署成功:

  1. Pod状态: Running, Ready (1/1)
  2. 访问应用显示Rails欢迎页面
  3. 页面显示Ruby 3.3.x和Rails 8.1.x版本
  4. 页面显示Pod主机名
  5. HTTPS证书已签发

📞 后续支持

监控命令

# 持续监控Pod状态
watch kubectl get pods -n rails-app

# 实时查看日志
kubectl logs -n rails-app -l app=rails-app -f

# 查看资源使用
kubectl top pods -n rails-app

故障排查

  1. Pod无法启动 → 查看日志和事件
  2. 应用无法访问 → 检查Ingress和Service
  3. 证书未签发 → 检查cert-manager日志
  4. ArgoCD不同步 → 检查Application状态

部署完成时间: 预计2026-02-04 23:10左右 文档更新: 2026-02-04 23:05