- 更新 Harbor 配置和部署脚本 - 添加 Gitea runner 配置和相关文件 - 完善 Tekton 流水线配置 - 添加 Harbor 镜像推送和管理脚本 - 修复 CI/CD 部署步骤和配置 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <[email protected]>
4.4 KiB
4.4 KiB
🔧 Bookstore CI/CD 修复后的部署步骤
⚠️ 发现的问题和修复
原始配置问题:
- Harbor 未部署: 配置中使用了
harbor.shared:28081,但 Harbor 没有实际部署 - 服务地址错误: 数据库和 Redis 服务命名空间不正确
- 镜像仓库不可用: 没有可用的容器镜像仓库
- 缺少必要的密钥: Harbor 和 Git 凭据不存在
修复方案:
- ✅ 修改服务地址指向正确的命名空间 (
shared-base) - ✅ 简化配置,使用公共镜像仓库进行测试
- ✅ 移除对未部署服务的依赖
- ✅ 创建渐进式部署流程
🚀 修复后的部署步骤
1. 部署修复后的 Tekton 配置
# 使用修复后的配置文件
kubectl apply -f devops/tekton/bookstore-tasks.yaml
kubectl apply -f devops/tekton/bookstore-pipeline-fixed.yaml
2. 创建数据库(如果需要)
# 在 shared-base 命名空间创建 bookstore 数据库
kubectl exec -n shared-base postgresql-0 -- psql -U postgres -c "CREATE DATABASE bookstore;"
kubectl exec -n shared-base postgresql-0 -- psql -U postgres -c "CREATE USER bookstore WITH PASSWORD 'bookstore123';"
kubectl exec -n shared-base postgresql-0 -- psql -U postgres -c "GRANT ALL PRIVILEGES ON DATABASE bookstore TO bookstore;"
3. 部署修复后的应用
# 使用修复后的部署配置
kubectl apply -f devops/k8s/bookstore-deployment-fixed.yaml
4. 测试简化版流水线
# 运行修复后的流水线
kubectl apply -f devops/tekton/bookstore-pipelinerun-fixed.yaml
# 查看状态
kubectl get pipelineruns -n tekton-pipelines
tkn pipelinerun logs bookstore-pipeline-run-fixed-xxx -n tekton-pipelines
🔍 验证步骤
检查基础服务
# 检查 PostgreSQL
kubectl get pods -n shared-base | grep postgresql
kubectl exec -n shared-base postgresql-0 -- psql -l
# 检查 Redis
kubectl get pods -n shared-base | grep redis
kubectl exec -n shared-base redis-master-0 -- redis-cli ping
# 检查 Gitea
kubectl get pods -n gitea
curl http://localhost:30080
# 检查 ArgoCD
kubectl get pods -n argocd
curl http://localhost:30081
检查应用部署
# 检查 bookstore 命名空间
kubectl get all -n app-bookstore
# 检查 Pod 日志
kubectl logs -f deployment/bookstore -n app-bookstore
# 检查服务
kubectl get svc -n app-bookstore
检查 CI/CD 组件
# 检查 Tekton
kubectl get pods -n tekton-pipelines
tkn task list
tkn pipeline list
# 检查流水线运行状态
kubectl get pipelineruns -n tekton-pipelines -w
📋 完整部署顺序
阶段 1: 基础设施验证
# 1. 确保基础服务运行
kubectl get pods -n gitea
kubectl get pods -n argocd
kubectl get pods -n shared-base
kubectl get pods -n tekton-pipelines
# 2. 验证网络连通性
kubectl run test-pod --image=busybox --rm -it -- wget -qO- http://gitea.gitea:3000
阶段 2: CI/CD 配置
# 3. 部署 CI/CD 组件
kubectl apply -f devops/tekton/bookstore-tasks.yaml
kubectl apply -f devops/tekton/bookstore-pipeline-fixed.yaml
# 4. 验证任务和流水线
tkn task list
tkn pipeline list
阶段 3: 应用部署
# 5. 准备数据库
kubectl exec -n shared-base postgresql-0 -- psql -U postgres -c "SELECT 1;"
# 6. 部署应用
kubectl apply -f devops/k8s/bookstore-deployment-fixed.yaml
# 7. 验证应用运行
kubectl get pods -n app-bookstore
阶段 4: 流水线测试
# 8. 运行测试流水线
kubectl apply -f devops/tekton/bookstore-pipelinerun-fixed.yaml
# 9. 监控执行
kubectl get pipelineruns -n tekton-pipelines -w
tkn pipelinerun logs <pipeline-run-name> -f -n tekton-pipelines
🚨 当前限制和后续改进
当前限制:
- 没有 Harbor: 使用 Docker Hub 或其他公共仓库
- 简化配置: 移除了复杂的安全扫描和多环境部署
- 临时镜像: 使用 busybox 作为占位符
后续改进建议:
- 部署 Harbor: 添加本地镜像仓库
- 完整镜像: 构建真实的 Spring Boot 镜像
- 添加监控: 集成 Prometheus 和 Grafana
- 多环境: 完善开发/测试/生产环境配置
✅ 成功标准
部署成功应该看到:
- ✅ 所有 Pod 运行正常
- ✅ 数据库连接成功
- ✅ 服务可以访问
- ✅ 流水线可以执行
- ✅ ArgoCD 可以监控部署
注意: 当前配置是渐进式部署,先验证基础功能,再逐步完善。