网易CI/CD实践(中):CD系统的部署架构与发布流程

是这样的,想请问下,网易CI/CD实践(中):CD系统的部署架构与发布流程
最新回答
一枕庭前雪

2026-06-16 10:34:58

网易轻舟的CD系统基于云原生技术构建,以Kubernetes为基础设施,通过模块化架构实现高效的应用交付流程。以下是其核心设计与实践细节:

部署架构

网易轻舟CI/CD容器部署系统采用管控集群与业务集群分离的架构设计,支持多云多集群部署:

  • 管控集群:负责核心调度与资源管理,数据存储于etcd中,通过自定义资源(CRD)定义容器规格、服务暴露方式等配置。
  • 业务集群:执行实际工作负载部署,与管控集群通过Agent双向通信。
  • 关键组件:

    API层:接收用户配置(如工作负载、发布策略等),转换为CRD存入etcd。

    管控集群Operator:包含多个控制器,监听CR变化并触发发布流程。

    业务集群Operator:执行具体操作(如工作负载创建、流量切换),通过ExecutionCRD抽象发布任务。

应用定义

系统通过应用模板实现资源聚合管理:

  • 应用抽象:将Deployment、Service、Ingress等资源整合为逻辑单元,支持统一部署与版本控制。
  • 模板化配置:镜像、副本数等参数由环境动态决定,配置变更自动触发新版本发布流程。
  • 对标CNCF模型:

    Topic1(应用定义):应用模板生成版本。

    Topic2(发布流程):自动化流程驱动版本升级。

    Topic3(工作负载管理):基于K8s原生资源(Deployment/StatefulSet)扩展。

发布流程

采用多阶段串行工作流,支持灵活扩展:

  1. 流程触发:DeploymentCRD变更生成Upgrade资源,启动发布流程。
  2. 阶段执行:

    每个阶段可定义并行指令,全部完成后进入下一阶段。

    支持手动/自动继续模式,用户可干预关键节点。

  3. 钩子机制:

    阶段前/后钩子:集成自动化测试、金丝雀验证或服务网格流量控制。

    典型场景:

    测试平台集成:阶段完成后触发验证,结果通过后继续流程。

    金丝雀发布:定义健康指标阈值,自动推进阶段。

    灰度流量控制:通过ServiceMesh动态调整流量比例。

发布策略

支持四种核心模式,满足多样化需求:

  1. K8s原生滚动更新:

    单阶段直接更新Deployment,由K8s控制器完成滚动升级。

  2. 灰度发布:

    通过多Deployment副本数调整实现平滑过渡。

    示例:10副本应用分两阶段发布,第一阶段50%流量到新版本,第二阶段全量切换。

  3. 自定义分组发布:

    按百分比或固定数量逐步扩容新版本,缩容老版本。

    配置示例:

    strategy: type: Custom custom: percentageList: [50, 100] # 分两阶段发布
  4. 蓝绿发布:

    通过修改Service SelectorLabel切换流量:

    部署新版本Pod并打标签。

    更新Service选择新标签。

    验证后缩容老版本。

流程监控

基于CRD+控制器实现实时状态跟踪:

  • 监控事件:流程暂停、超时、错误(如资源不足、镜像拉取失败)。
  • 通知机制:通过HTTP Webhook对接告警平台,发布完成后触发后续系统对接。
总结

网易轻舟CD系统通过云原生架构、模块化设计和自动化流程,实现了高效可靠的应用交付。其核心优势包括:

  • 多集群支持:跨云环境统一管理。
  • 灵活策略:覆盖滚动、灰度、蓝绿等全场景。
  • 强扩展性:钩子机制无缝集成测试与流量控制。
  • 可视化监控:实时反馈流程状态,保障发布安全。

该方案为企业提供了从代码提交到生产部署的全链路自动化能力,显著提升了交付效率与稳定性。