发布策略科普篇:蓝绿 / 红黑 / 灰度 / 滚动

随着市场快速演变,产研团队面临着需求快速迭代和变更高频发布的挑战。然而,由于难以完全模拟线上流量和真实场景,频繁的发布活动可能对整个系统构成风险,小问题也可能迅速蔓延,影响服务可用性、损害客户及用户体验。幸运的是,随着云技术和基础架构的日益成熟,我们可以通过采用适当的发布策略,在早期阶段识别并调整问题,确保系统的稳健运行。

目前,业界普遍采用的发布策略包括蓝绿发布、红黑发布、金丝雀(灰度)发布和滚动发布等,每种策略都有其独特的概念和运作原理。本文将详细阐述这些策略,并展示如何借助 Zadig 平台实现变更的高效发布,以优化发布流程并提升整体效率。

不同的发布策略及特点介绍

蓝绿发布

概念定义: 蓝绿发布是一种以最小的停机时间做服务升级的策略。 需要维护的两个版本的环境分别称为 “蓝环境” 和 “绿环境”。一般当前生产流量指向环境为绿环境,而在蓝环境上部署新版本,短时间内作为测试环境。

发布流程: 首先将一半的服务流量从负载均衡列表中移除,并且更新服务版本,验证新版本没有问题后,将生产流量指向蓝环境,然后对于老版本的绿环境进行版本升级,最后将所有服务流量加回负载均衡。

特点:

  • 升级过程无需停机,用户感知小
  • 升级过程一半资源提供服务
  • 升级 / 回滚速度快
  • 如果出了问题,影响面较广

红黑发布

概念定义: 与蓝绿发布类似,红黑发布也是通过两个环境完成软件版本的升级,将当前生产流量指向的环境称为红环境,新版本环境称为黑环境。

发布流程: 需申请新资源用于部署黑环境,在黑环境部署新版本的服务;黑环境部署完成后,一次性将生产流量指向黑环境;释放红环境的资源。

特点:

  • 升级过程无需停机,用户感知小
  • 短时间内需要使用双倍资源

与蓝绿发布相比,红黑发布充分利用了云计算的弹性伸缩的优势,实现:

  1. 简化发布流程
  2. 避免在升级的过程中,由于只有一半资源提供服务,而导致的系统过载问题

灰度发布

概念定义: 灰度发布属于增量发布,新老版本同时为用户提供服务。灰度发布的主要目的是保证系统的可用性。每一次的线上变更都无法保证系统 100% 的无 bug,所以变更后要在线上小范围验证,等没问题再全面放开。而金丝雀发布是灰度发布的一种实现。

金丝雀发布由来:以前矿工开矿,在下矿洞前需要检查下方是否有毒气,矿工们先会放一只金丝雀进去探是否有毒气体,看金丝雀能否活下来。

发布流程:在现有环境中部署少量服务的新版本(金丝雀),部署完成后,对线上流量进行监测,如果没有问题就对老版本服务进行全量升级。

特点

  • 用户体验影响小,灰度发布过程出现问题影响范围较小
  • 新版本功能逐步发布,可以逐步评估新版服务性能、稳定性和健康状态
  • 发布自动化程度不够,发布期间可能引发服务中断

滚动发布

在金丝雀发布基础上的进一步优化改进,是一种自动化程度较高的发布方式,用户体验比较平滑,是目前成熟型技术组织所采用的主流发布方式。

结合 Zadig 实践

Zadig 推出蓝绿发布、金丝雀发布、分批次灰度等发布任务,下面主要介绍在 Zadig 上如何使用这几个发布任务。

蓝绿发布 / 红黑发布

使用条件

所要更新服务的 workload 需要满足以下条件:

  1. workload 需要有一个 service 与之对应,并且 workload 的 labels 包含所有 service 的 selector labels。
  2. workload 当前只支持 deployment 类型。

配置蓝绿发布

  1. 新建工作流。访问工作流 -> 新建工作流,选择「蓝绿发布」工作流模板来新建工作流。

  1. 配置部署蓝绿环境任务。选择「部署蓝绿环境」任务并配置。

  1. 配置验证任务,验证蓝环境质量是否符合上线要求。选择「check」任务并配置。

  1. 配置审批任务。

  1. 配置蓝绿发布任务。选择「蓝绿发布」任务并配置。

  1. 点击工作流「保存」按钮,完成工作流配置。

执行蓝绿发布

  • 点击「执行」按钮,选择需要更新的服务及镜像。

  • 工作流按照设置的任务完成执行,执行状态如下图所示。

  • 发布效果如下

金丝雀发布

使用条件

所要更新服务的 workload 需要满足以下条件:

  1. workload 需要有一个 service 与之对应,并且 workload 的 labels 包含所有 service 的 selector labels。
  2. workload 当前只支持 deployment 类型。

配置金丝雀发布

  1. 新建工作流。访问工作流 -> 新建工作流,选择「金丝雀发布」工作流模板来新建工作流。

  1. 配置金丝雀部署任务。选择「金丝雀部署」任务并配置。

  1. 配置验证任务,验证金丝雀版本是否符合上线要求。选择「check」任务并配置。

  1. 配置审批任务。

  1. 配置金丝雀发布任务。选择「金丝雀发布」并配置。

  1. 点击工作流「保存」按钮,完成工作流配置。

执行金丝雀发布

  • 点击「执行」按钮,选择需要更新的实例及镜像。

  • 工作流完成部署金丝雀和验证任务,等待人工审核。此时环境中已部署 1 个金丝雀实例,如下图所示。

  • 人工审核通过并完成金丝雀发布。此时环境已更新为金丝雀版本,如下图所示。

分批次灰度发布

灰度发布有很多种实现方式,除了金丝雀发布,Zadig 还支持分批次灰度发布,按照实际情况,分多次升级线上服务,比如第一次灰度 20%,将生产 20% 流量打入新版本,通过监控观测线上流量情况,第二次灰度 40% ,观测流量,没问题后全量上线。

配置灰度发布

  1. 新建工作流。访问工作流 -> 新建工作流,选择「多阶段灰度发布」工作流模板来新建工作流。

  1. 配置「灰度发布」任务。选择「灰度发布」任务并首个灰度任务配置。

  1. 添加更多灰度阶段,配置非首个灰度任务 任务。

  1. 配置审批任务。

执行灰度发布

  • 点击「执行」按钮,选择需要灰度的容器及其镜像。

  • 工作流按照设置的任务完成执行,执行状态如下图所示。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值