以下是企业级 CI/CD 架构图说明 部署模板,适用于使用 Gerrit + Jenkins + Docker + Kubernetes 的现代化开发流程。

🧭 企业级 CI/CD 架构图说明

┌────────────────────────────────────────────────────────────┐
│                        开发者提交代码                      │
│                git push → Gerrit (refs/for/master)         │
└────────────────────────────────────────────────────────────┘
                          ↓
┌────────────────────────────────────────────────────────────┐
│                        Gerrit 审查系统                     │
│  - 创建 Change(变更)                                     │
│  - 审查者评分、评论                                       │
│  - 触发 Jenkins 构建(Patchset Created)                  │
└────────────────────────────────────────────────────────────┘
                          ↓
┌────────────────────────────────────────────────────────────┐
│                          Jenkins CI                        │
│  - 拉取代码                                                 │
│  - 执行构建脚本(Maven/Gradle/NPM 等)                    │
│  - 单元测试、静态分析                                      │
│  - 构建 Docker 镜像                                        │
│  - 推送镜像到镜像仓库(如 Harbor 或 DockerHub)           │
└────────────────────────────────────────────────────────────┘
                          ↓
┌────────────────────────────────────────────────────────────┐
│                     Kubernetes CD(部署阶段)              │
│  - Jenkins 调用 kubectl 或 Helm 部署至 K8s 集群           │
│  - 自动化滚动更新                                           │
│  - Prometheus + Grafana 监控服务状态                      │
└────────────────────────────────────────────────────────────┘

📦 部署模板(组件清单)

1. Gerrit 代码审查系统

  • 部署方式:Docker 或 Linux 原生安装
  • 端口:8080(HTTP),29418(SSH)
  • 用户认证:LDAP / OAuth / 本地账户
  • 审查流程:refs/for/master 推送触发审查

2. Jenkins 持续集成

  • 部署方式:Docker 或 Kubernetes
  • 插件:

    • Gerrit Trigger Plugin
    • Git Plugin
    • Pipeline Plugin
  • 构建脚本:Jenkinsfile(Groovy DSL)

3. Docker 镜像构建与仓库

  • 构建工具:Dockerfile
  • 镜像仓库:Harbor(推荐企业私有)或 DockerHub
  • 安全策略:镜像签名、扫描漏洞

4. Kubernetes 持续部署

  • 部署工具:kubectl、Helm
  • 环境隔离:dev / staging / production 命名空间
  • 自动化策略:滚动更新、回滚、探针检测

5. 监控与告警

  • Prometheus:采集指标
  • Grafana:可视化仪表盘
  • Alertmanager:告警通知(邮件、Slack)

✅ 企业落地建议

项目 建议
安全性 使用 RBAC 控制 Jenkins 与 K8s 权限
审查流程 Gerrit 审查通过后再触发部署
构建隔离 使用 Jenkins Agent 执行构建任务
镜像管理 定期清理旧版本,启用漏洞扫描
灰度发布 使用 K8s 的 Canary 或 Blue-Green 策略

Gerrit 部署教程

🧱 一、环境准备

✅ 系统要求

  • 操作系统:Ubuntu 20.04 / 22.04(其他 Linux 发行版也可)
  • 必备组件:

    • Git:sudo apt install git
    • Java JDK(推荐 OpenJDK 11):sudo apt install openjdk-11-jdk
    • SSH 服务(用于代码推送):sudo apt install openssh-server

📦 二、创建 Gerrit 用户与目录

sudo adduser gerrit
sudo su gerrit
cd /home/gerrit
mkdir review_site

📥 三、下载并初始化 Gerrit

wget https://gerrit-releases.storage.googleapis.com/gerrit-3.7.0.war
java -jar gerrit-3.7.0.war init -d review_site

安装过程中会提示配置项,推荐如下:

配置项 推荐设置
Git 仓库路径 默认即可
Web 服务器类型 JETTY(Gerrit 内建)
HTTP 端口 默认 8080
SSH 端口 默认 29418
用户认证方式 OpenIDHTTP(可选)
是否启用邮件通知 可跳过或配置 SMTP
是否启用代码审查标签 选择 y

🚀 四、启动与管理 Gerrit

cd ~/review_site/bin
./gerrit.sh start     # 启动服务
./gerrit.sh stop      # 停止服务
./gerrit.sh restart   # 重启服务

访问地址:http://<服务器IP>:8080

👨‍💻 五、开发者使用流程

1. 上传 SSH 公钥

  • 登录 Gerrit Web UI
  • 进入用户设置 → SSH Keys → 添加公钥

2. 克隆项目仓库

git clone ssh://<user>@<server-ip>:29418/<project-name>

3. 提交代码并推送审查

git checkout -b feature-branch
git add .
git commit -m "Add new feature"
git push origin HEAD:refs/for/master

📌 补充说明

  • Gerrit 内建 Jetty Web 服务,默认监听 8080,无需 Nginx。
  • 若需启用 HTTPS,可配置 Jetty 的 SSL 证书(非必须)。
  • 若后续需要负载均衡或统一入口,再考虑引入 Nginx。

Nginx作为 Gerrit 的反向代理或负载均衡器

🧭 为什么将 Nginx 与 Gerrit 分离部署?

✅ 优势一:安全隔离

  • Nginx 作为前端网关,暴露公网端口。
  • Gerrit 作为后端服务,仅在内网运行,减少攻击面。

✅ 优势二:负载均衡与高可用

  • Nginx 可代理多个 Gerrit 实例,实现负载均衡。
  • 可结合 Keepalived 实现高可用架构。

✅ 优势三:统一入口与证书管理

  • Nginx 统一处理 HTTPS 证书(如 Let's Encrypt)。
  • 可配置 URL 重写、访问控制、缓存策略。

🛠️ 架构示意图

[开发者浏览器]
        ↓
     HTTPS 443
        ↓
┌──────────────┐
│   Nginx 服务器 │  ← 公网访问
└──────────────┘
        ↓
     HTTP 8081
        ↓
┌──────────────┐
│ Gerrit 服务器 │  ← 内网部署
└──────────────┘

⚙️ Nginx 配置示例(部署在独立服务器)

server {
    listen 443 ssl;
    server_name gerrit.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    location / {
        proxy_pass http://gerrit.internal.ip:8081;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

📌 注意事项

项目 建议
网络连接 确保 Nginx 能访问 Gerrit 内网地址
认证方式 Gerrit 配置为 HTTP 模式,使用 Nginx 处理认证
端口管理 Gerrit 可监听 8081,Nginx 监听 443/80
日志分析 Nginx 可记录访问日志,便于审计与监控
Copyright © https://yan-jian.com 2023 all right reserved更新时间: 2025-10-10 16:41:50

results matching ""

    No results matching ""