特点
- 严格审批: Tech Lead + 运维
- 副本数: 3+ (HPA)
- 资源限制: 生产级
- 用途: 生产服务
发布节奏
- 周五晚 (常规)
- 随时 (紧急 hotfix)
回滚策略
修改 prod overlay 镜像 tag
→ 回退到上一版本
→ MR 合并即回滚
Kargo: 一键 Rollback
特点
- 自动部署: merge 到 main 即发布
- 副本数: 1
- 资源限制: 低
- 用途: 开发自测 / 联调
发布节奏
每次 commit 自动触发
20个服务 Pod
svc-user-xxx
svc-auth-xxx
svc-order-xxx
svc-payment-xxx
...
(共20个 Deployment)
特点
- MR 审批: 需要 1 人 review
- 副本数: 2
- 资源限制: 中
- 用途: 测试 / 回归 / 验收
发布节奏
- 周二晚
- 周四晚
版本管理
语义化版本: v1.2.3
从 main 打 tag → CI 构建
创建 MR 修改 test overlay
→ Kargo Promotion
🚀 CI/CD 流水线全景架构图
20微服务 × GitLab CI × GitOps × ArgoCD × Kargo
代码、镜像、配置、环境全部在 Git 中可追踪,所有环境的变更都通过 Merge Request 审批
svc-order 订单服务
svc-payment 支付服务
svc-product 产品服务
svc-cart 购物车服务
svc-notification 通知服务
svc-search 搜索服务
svc-recommend 推荐服务
svc-report 报表服务
svc-gateway API网关
svc-config 配置中心
base/ (通用模板)
base/
svc-user/
svc-auth/
svc-order/
... (20个服务)
Deployment / Service / ConfigMap 模板
overlays/dev/
开发环境覆盖配置
- 镜像 tag:
${CI_COMMIT_SHA} - 副本数: 1
- 资源限制: 较低
overlays/test/
测试/预发环境覆盖配置
- 镜像 tag:
v1.2.3(语义化版本) - 副本数: 2
- 需要 MR 审批
Application CRD
每个环境一个 Application:
app-dev→ overlays/devapp-test→ overlays/testapp-prod→ overlays/prod
同步策略
- Dev: 自动同步 (automated: true)
- Test: 手动同步 + Diff 预览
- Prod: 手动同步 + 审批 + Diff 预览
Stage 定义
dev → test → prod
每个 Stage 对应 K8s 命名空间
Freight 管理
- 自动发现新镜像版本
- 创建 Freight (版本包)
- 通过 Promotion 逐级推进
svc-auth 认证服务
Stage 1: Lint
代码格式检查、静态分析
golangci-lint / pylint / eslint
Stage 2: Test
单元测试 + 覆盖率检查
go test / pytest / npm test
Stage 3: Build
构建 Docker 镜像
registry.example.com/group/svc:${CI_COMMIT_SHA}
Stage 4: Scan
安全扫描 (SAST/SCA/容器扫描)
trivy / grype / semgrep
Stage 5: Push Registry
推送镜像到 GitLab Container Registry
同时打语义化 tag: v1.2.3
Stage 6: Update GitOps
自动修改 env-config 仓库的镜像 tag
创建 MR → dev 环境自动合并
overlays/prod/
生产环境覆盖配置
- 镜像 tag:
v1.2.3(验收通过版本) - 副本数: 3+
- 严格 MR 审批 (Tech Lead + 运维)
svc-user 用户服务
svc-inventory 库存服务
Metrics (指标)
Prometheus + Grafana
- 服务 QPS / 延迟 / 错误率
- 资源使用 (CPU/内存)
- 业务指标
告警规则:
- P99 延迟 > 500ms
- 错误率 > 1%
- Pod 重启
Logs (日志)
CloudWatch / ELK / Loki
- 统一日志格式 (JSON)
- 结构化字段
- 日志聚合分析
查询:
- 按 trace_id 关联
- 按 service 过滤
- 错误日志告警
Traces (调用链)
Jaeger / X-Ray / Tempo
- 分布式追踪
- 服务调用拓扑
- 性能瓶颈定位
OpenTelemetry 统一接入:
- 自动注入 trace context
- 跨服务链路追踪
密钥管理
Vault / SealedSecret
- 敏感信息加密存储
- 运行时注入
- 自动轮换
GitLab CI Variables:
- Masked Variables
- Protected Variables
准入控制
分支保护:
- main/release/* 保护
- 必须 MR + 至少 1 人 review
- CI 通过才能合并
准入标准:
- 无单测/CI失败 → 禁止合并
- 生产 MR 需多人审批
统一规范
- 代码结构统一
- CI 模板复用
- 禁止 kubectl apply
- 配置收敛到 ConfigMap
《DevOps 开发指南》
- 分支命名规范
- MR 规范
- 提测/上线流程
svc-analytics 分析服务
svc-registry 服务注册
分支策略 (Trunk-Based)
main (保护) ← feature/* / hotfix/* → release/* (可选)
每个仓库包含: .gitlab-ci.yml + Dockerfile + 业务代码
CI 模板仓库
ci-templates/ 统一模板,所有微服务 include 复用
新服务只需复制最小配置即可接入流水线
svc-crawler 爬虫服务
svc-llm LLM服务
svc-embedding 向量服务
svc-scheduler 调度服务
svc-admin 管理后台