Major Changes: - Create PROMPT_BLUEPRINT_V2.md (Claude Code-driven development guide) - Add Argo CD Application configurations (GitOps deployment) - Update CI/CD workflow to comply with GitOps requirements - Create blueprint-checker skill for compliance validation - Add migration-job template for database migrations - Add comprehensive deployment documentation New Files: - PROMPT_BLUEPRINT_V2.md - Production-grade development blueprint - argocd/ - Argo CD Application configurations (dev/prod) - .claude/skills/blueprint-checker/ - Compliance checking tool - deployment/helm/gold-template/templates/migration-job.yaml - PreSync migration job - deployment/helm/gold-template/values-infra-db.yaml - Infra database integration - docs/deployment/ - Deployment guides and best practices - OPTIMIZATION-SUMMARY.md - Optimization work summary Updated Files: - .github/workflows/complete-cicd.yml - GitOps-compliant deployment - backend/main.py - Enhanced observability (metrics, structured logs) - requirements.txt - Add prometheus-client - deployment/helm/gold-template/values-orbstack.yaml - Metrics configuration Blueprint Compliance: 83% (19/23 checks passed) Related Issues: - #26 Configure Alembic database migration - #27 Integrate OpenTelemetry tracing - #28 Create Grafana Dashboard 🤖 Generated with Claude Code Co-Authored-By: Claude Sonnet 4.5 <[email protected]>
10 KiB
10 KiB
实施总结 - 可执行的工作流集成
本文档总结了针对用户 4 个问题的实际实施(非文档),所有功能已集成到模板的可执行工作流中。
✅ 已实施的功能
1. 镜像构建和推送 (Image Build & Push)
实施位置: scripts/deploy-orbstack.sh
功能:
- ✅ 自动构建 Docker 镜像到
localhost:5000(OrbStack 本地仓库) - ✅ 可选推送到 Harbor 私有仓库 (
harbor.omniverseai.net/ljwx/) - ✅ 可选推送到 GitHub Container Registry (GHCR)
- ✅ 支持多架构构建 (amd64, arm64)
- ✅ 集成到 CI/CD pipeline
镜像仓库配置:
- 本地开发:
localhost:5000/gold-template(OrbStack 内置) - Harbor 私有仓库:
harbor.omniverseai.net/ljwx/gold-template(192.168.1.83:8443) - GitHub GHCR:
ghcr.io/username/gold-template(CI/CD 自动推送)
使用方法:
# 本地构建
./scripts/deploy-orbstack.sh
# 构建并推送到 Harbor
./scripts/setup-harbor.sh # 首次设置凭证
./scripts/deploy-orbstack.sh --push-harbor
# 构建并推送到 GHCR
./scripts/deploy-orbstack.sh --push-ghcr ghcr.io/username/gold-template
# 跳过构建(使用已有镜像)
./scripts/deploy-orbstack.sh --skip-build
Harbor 设置:
# 1. 登录 Harbor
docker login harbor.omniverseai.net
# 2. 创建 Kubernetes secret
./scripts/setup-harbor.sh
# 3. 推送镜像
./scripts/deploy-orbstack.sh --push-harbor
CI/CD 集成:
.github/workflows/complete-cicd.yml自动构建并推送到 GHCR- 支持多分支策略(main, develop, PR)
- 自动标签管理(latest, branch, sha, semver)
2. 本地部署配置 (Local Deployment Config)
实施位置:
scripts/deploy-orbstack.sh(部署脚本)deployment/helm/gold-template/values-orbstack.yaml(配置)
功能:
- ✅ 镜像来源:
localhost:5000/gold-template(OrbStack 本地仓库) - ✅ 默认 namespace:
gold-template(可自定义) - ✅ 自动检测 OrbStack 环境
- ✅ 单节点优化配置
- ✅ 自动端口转发到 localhost:8000
使用方法:
# 默认部署到 gold-template namespace
./scripts/deploy-orbstack.sh
# 自定义 namespace
./scripts/deploy-orbstack.sh --namespace my-app
# 查看部署状态
kubectl get pods -n gold-template
配置说明:
- 镜像自动从本地 Docker 读取(无需推送到远程)
- OrbStack 的 K8s 与 Docker 共享镜像存储
- 支持
pullPolicy: Always确保使用最新镜像
3. 复用 Infra 数据库 (Infra Database Integration)
实施位置:
deployment/helm/gold-template/values-infra-db.yaml(配置文件)scripts/deploy-orbstack.sh(自动创建 secrets)
功能:
- ✅ 跨 namespace 访问 PostgreSQL/MySQL/Redis
- ✅ 使用 Kubernetes DNS 服务发现
- ✅ 自动生成数据库凭证 secrets
- ✅ 支持环境变量注入
使用方法:
# 使用 infra namespace 的数据库部署
./scripts/deploy-orbstack.sh --mode infra-db
# 脚本会自动:
# 1. 创建 gold-template-db-secret (PostgreSQL 凭证)
# 2. 创建 gold-template-redis-secret (Redis 凭证)
# 3. 配置跨 namespace 服务访问
配置示例:
# values-infra-db.yaml
database:
host: postgres-service.infra.svc.cluster.local
port: 5432
name: goldtemplate
redis:
host: redis-service.infra.svc.cluster.local
port: 6379
DNS 格式:
<service-name>.<namespace>.svc.cluster.local
4. K8s 可观测性 (Observability)
实施位置:
backend/main.py(应用代码集成)deployment/helm/gold-template/templates/servicemonitor.yaml(Prometheus 集成)scripts/monitor.sh(监控工具).github/workflows/complete-cicd.yml(CI/CD 验证)
4.1 日志 (Logs)
功能:
- ✅ 结构化 JSON 日志格式
- ✅ 自动添加时间戳、级别、模块信息
- ✅ 异常堆栈跟踪
使用方法:
# 查看实时日志
./scripts/monitor.sh logs
# 查看最近 50 行
./scripts/monitor.sh logs --tail 50
# 不跟踪(只显示一次)
./scripts/monitor.sh logs --no-follow
# 使用 kubectl
kubectl logs -f -n gold-template -l app.kubernetes.io/name=gold-template
日志格式示例:
{
"timestamp": "2025-01-15T10:30:45.123456",
"level": "INFO",
"logger": "backend.main",
"message": "GET /health 200 0.003s",
"module": "main",
"function": "metrics_middleware"
}
4.2 指标 (Metrics)
功能:
- ✅ Prometheus metrics 端点 (
/metrics) - ✅ HTTP 请求计数器 (
http_requests_total) - ✅ 请求延迟直方图 (
http_request_duration_seconds) - ✅ ServiceMonitor 自动发现
- ✅ Pod annotations 配置
使用方法:
# 查看 metrics
./scripts/monitor.sh metrics
# 直接访问
curl http://localhost:8000/metrics
# 查看特定指标
curl http://localhost:8000/metrics | grep http_requests_total
Metrics 示例:
# HELP http_requests_total Total HTTP requests
# TYPE http_requests_total counter
http_requests_total{method="GET",endpoint="/",status="200"} 42.0
http_requests_total{method="GET",endpoint="/health",status="200"} 120.0
# HELP http_request_duration_seconds HTTP request duration
# TYPE http_request_duration_seconds histogram
http_request_duration_seconds_bucket{method="GET",endpoint="/",le="0.005"} 40.0
http_request_duration_seconds_bucket{method="GET",endpoint="/",le="0.01"} 42.0
Prometheus 集成:
# ServiceMonitor 自动配置
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
name: gold-template
spec:
endpoints:
- port: http
path: /metrics
interval: 30s
4.3 健康检查 (Health Checks)
功能:
- ✅
/health- 基础健康检查 - ✅
/health/ready- 就绪检查(包含数据库状态) - ✅ 自动监控脚本
使用方法:
# 检查健康状态
./scripts/monitor.sh health
# 直接访问
curl http://localhost:8000/health
curl http://localhost:8000/health/ready
响应示例:
{
"status": "healthy",
"timestamp": "2025-01-15T10:30:45.123456"
}
{
"status": "ready",
"database": "postgres-service.infra.svc.cluster.local",
"timestamp": "2025-01-15T10:30:45.123456"
}
4.4 监控工具
功能:
- ✅
monitor.sh- 统一监控脚本 - ✅ 支持日志、metrics、健康检查、资源使用
- ✅ 集成到 CI/CD 验证
使用方法:
# 查看所有可用命令
./scripts/monitor.sh --help
# 常用命令
./scripts/monitor.sh logs # 实时日志
./scripts/monitor.sh metrics # Prometheus metrics
./scripts/monitor.sh health # 健康检查
./scripts/monitor.sh status # 部署状态
./scripts/monitor.sh top # 资源使用
./scripts/monitor.sh events # K8s 事件
./scripts/monitor.sh describe # Pod 详情
🔄 CI/CD 集成
实施位置: .github/workflows/complete-cicd.yml
功能:
- ✅ 自动构建并推送镜像到 GHCR
- ✅ 多架构支持 (amd64, arm64)
- ✅ 容器安全扫描 (Trivy)
- ✅ 部署后验证(健康检查、metrics 检查)
- ✅ 可观测性验证
验证步骤:
- name: Health check
run: |
curl -f http://gold-template.dev.local/health || exit 1
curl -f http://gold-template.dev.local/health/ready || exit 1
- name: Metrics check
run: |
curl -f http://gold-template.dev.local/metrics | grep -q "http_requests_total" || exit 1
- name: Verify observability
run: |
METRICS=$(curl -s http://gold-template.dev.local/metrics)
echo "$METRICS" | grep -q "http_requests_total" && echo "✅ Request counter found"
echo "$METRICS" | grep -q "http_request_duration_seconds" && echo "✅ Request duration histogram found"
📊 完整工作流示例
场景 1: 本地开发部署
# 1. 构建并部署
./scripts/deploy-orbstack.sh
# 2. 查看日志
./scripts/monitor.sh logs
# 3. 检查健康状态
./scripts/monitor.sh health
# 4. 查看 metrics
./scripts/monitor.sh metrics
# 5. 访问应用
open http://localhost:8000
open http://localhost:8000/docs
open http://localhost:8000/metrics
场景 2: 使用 Infra 数据库部署
# 1. 部署(自动创建数据库 secrets)
./scripts/deploy-orbstack.sh --mode infra-db
# 2. 查看生成的凭证
kubectl get secret gold-template-db-secret -n gold-template -o yaml
# 3. 验证数据库连接
./scripts/monitor.sh logs | grep "database"
# 4. 检查就绪状态(包含数据库检查)
curl http://localhost:8000/health/ready
场景 3: 生产部署
# 1. 构建并推送到 GHCR
./scripts/deploy-orbstack.sh --push-ghcr ghcr.io/username/gold-template --tag v1.0.0
# 2. 部署到生产环境(使用 infra 数据库)
./scripts/deploy-orbstack.sh --mode infra-db --namespace gold-template-prod --tag v1.0.0
# 3. 验证部署
./scripts/monitor.sh status -n gold-template-prod
./scripts/monitor.sh health -n gold-template-prod
# 4. 监控 metrics
./scripts/monitor.sh metrics -n gold-template-prod
🎯 关键特性总结
✅ 可执行 (Executable)
- 所有功能通过脚本自动化
- 一键部署,无需手动配置
- 支持多种部署模式
✅ 可监控 (Monitorable)
- Prometheus metrics 实时收集
- 结构化日志便于分析
- 健康检查端点
- 统一监控工具 (
monitor.sh)
✅ 可追溯 (Traceable)
- 所有操作有日志记录
- Metrics 历史数据
- CI/CD 完整记录
- Git commit 追溯
📝 配置文件清单
| 文件 | 用途 | 状态 |
|---|---|---|
scripts/deploy-orbstack.sh |
部署脚本 | ✅ 已实施 |
scripts/monitor.sh |
监控工具 | ✅ 已实施 |
backend/main.py |
应用代码(metrics + logs) | ✅ 已实施 |
requirements.txt |
添加 prometheus-client | ✅ 已实施 |
values-orbstack.yaml |
本地部署配置 | ✅ 已实施 |
values-infra-db.yaml |
Infra 数据库配置 | ✅ 已实施 |
templates/servicemonitor.yaml |
Prometheus 集成 | ✅ 已实施 |
.github/workflows/complete-cicd.yml |
CI/CD 验证 | ✅ 已实施 |
🚀 下一步
所有核心功能已实施并集成到工作流中。用户可以:
- 立即使用:
./scripts/deploy-orbstack.sh - 监控应用:
./scripts/monitor.sh logs/metrics/health - 切换模式:
--mode infra-db使用 infra 数据库 - 推送镜像:
--push-ghcr推送到 GHCR
所有功能都是可执行、可监控、可追溯的。