持续交付与 GitOps (Continuous Delivery & GitOps)
Harness 持续交付 (CD) 模块提供强大的部署自动化能力,支持多种部署策略和目标环境。结合 GitOps 方法,实现基础设施和应用的双重 Git 管理。核心功能
部署策略
- 蓝绿部署:同时运行两套环境,实现零停机切换
- 金丝雀发布:逐步将流量切换到新版本,降低发布风险
- 滚动部署:按批次滚动更新,无须额外基础设施
- 内置部署:直接替换旧版本
GitOps 工作流
- 声明式配置:以代码形式定义期望状态
- 自动同步:监控系统状态,自动纠正偏差
- 多环境支持:管理开发、测试、预生产、生产等多套环境
部署目标
- Kubernetes:原生 Kubernetes 部署
- Helm:Helm Chart 部署
- 自定义脚本:支持任意部署方式
- 云服务:AWS、Azure、GCP 等主流云平台
- 虚拟机:物理机或虚拟机部署
质量门禁与审批
- 手动审批:人工确认后再继续部署
- 自动验证:结合测试结果决定是否继续
- 策略执行:使用 OPA 定义部署策略
适用场景
| 场景 | 推荐策略 |
|---|---|
| 高可用应用 | 金丝雀发布 + 自动回滚 |
| 快速迭代 | 滚动部署 + 蓝绿切换 |
| 关键系统 | 蓝绿部署 + 多阶段审批 |
| GitOps 管理 | GitOps 自动同步 |
快速开始
1. 创建应用
在 Harness 中创建一个 CD 应用,定义部署目标。2. 配置服务
定义要部署的服务(Artifact)和目标基础设施。3. 定义环境
创建开发、测试、生产等环境,并配置对应的基础设施。4. 配置流水线
设计包含部署阶段的流水线,添加质量门禁和审批节点。5. 设置触发器
配置基于 CI 完成、Git 事件或手动触发的部署规则。与其他模块集成
- CI:接收 CI 构建的产物并自动部署
- FF:在部署过程中管理功能标志
- CE:部署前运行混沌实验验证系统韧性
- CCM:监控部署过程中的云成本
- STO:在部署阶段执行安全扫描
GitOps 优势
- 版本控制:所有变更都有完整的审计追踪
- 一致性:环境配置与应用部署保持一致
- 回滚简便:通过 Git 命令即可回滚到任意版本
- 团队协作:利用 PR 流程进行变更审核
最佳实践
- 小步快跑:频繁小量发布,降低风险
- 自动化一切:减少人工操作,降低错误率
- 监控回滚:配置自动回滚条件
- 渐进式发布:逐步扩大影响范围