流水线 CODEARTS PIPELINE-基于Kubernetes原生Service的场景完成微服务蓝绿发布:方案概述

时间:2024-10-29 16:02:42

方案概述

应用场景

在进行服务发布的时候,通常会碰到这样的问题:

  • 直接在生产环境发布后再进行测试,可能会带来较大风险,对线上用户造成影响。
  • 测试环境虽然和生产环境高度一致,然而实际情况下,由于资源配置、网络环境等,测试环境和生产环境之间总会存在差异,因此难以在测试环境覆盖验证所有场景。

通过灰度发布可以实现在不引发风险的同时,在生产环境进行发布及验证。

方案优势

灰度发布是在生产环境中创建与当前线上服务完全一致的工作负载(灰度负载),仅对其中的包版本(业务代码和配置)进行更新,但是新创建的工作负载不承接任何现网流量,对线上用户没有任何影响,就可以在没有风险的情况下,在生产环境进行测试了。在灰度环境验证无问题之后,就可以逐渐将线上用户的真实访问引流到灰度负载,直至完全引流后,新创建的灰度负载承接所有现网流量,原先的线上负载不承接任何流量,此时就可以安全地删除旧负载,保留新负载,完成一次发布。

按照引流方式的不同,当前常用的灰度发布方式包括:快速完成100%流量切换的蓝绿发布和按流量比例或线上请求内容引流的金丝雀发布。通常情况,蓝绿发布已经足以降低发布风险,蓝绿发布有如下优势:

  • 不需要集群安装额外的插件。
  • 无风险的进行生产环境灰度验证。
  • 快速进行流量切换(从旧负载切换新负载,或从新负载切回旧负载)。
  • 在验证阶段发现问题后,可以快速将线上服务恢复(回滚)至发布前的状态。
support.huaweicloud.com/bestpractice-pipeline/pipeline_practice_0002.html