当前位置:   article > 正文

云效 AppStack + 阿里云 MSE 实现应用服务全链路灰度

云效 AppStack + 阿里云 MSE 实现应用服务全链路灰度

作者:周静、吴宇奇、泮圣伟

在应用开发测试验证通过后、进行生产发布前,为了降低新版本发布带来的风险,期望能够先部署到灰度环境,用小部分业务流量进行全链路灰度验证,验证通过后再全量发布生产。本文主要介绍如何通过阿里云 MSE 微服务引擎和云效应用交付平台AppStack 实现灰度发布。

读完本文,你将了解到:

  • 以 SpringCloud 应用为例,了解全链路灰度场景及其工作原理;
  • 如何基于云效 Appstack 完成应用基线环境的部署,实时观测环境部署进度;
  • 如何平滑为存量应用添加灰度环境、灰度发布流程,不影响已有发布流程;
  • 如何基于 MSE 实现自定义多种灰度路由规则条件,精准测试灰度流量;
  • 如何实现应用灰度环境下线,及时清理无用资源。

场景描述

本文将以 A、B、C 三个 SpringCloud 应用为例,展示如何通过阿里云云效 AppStack 来整合 MSE 全链路灰度的功能,实现将应用一键部署到灰度环境,并进行全链路灰度的测试。

假设已有 A、B、C 三个应用的基线版本正在运行。整体上应用的调用链路是,客户端入口流量首先到达网关应用,而后按顺序经过 A、B、C 三个应用:

图片

一次需求发布窗口中,应用 A 和 C 进行了迭代,需要对 A 和 C 的新版本进行全链路灰度测试,调用链路如下:

图片

整体方案

通过云效 AppStack,在应用发布流程上增加一个灰度流程。每个应用走到生产环境部署前,都会先发布到灰度环境。通过灰度标识对灰度环境进行验证,等到开发/测试人员对灰度环境的应用测试没有问题时,再手工放行流水线走到真正的线上发布部署阶段。

图片

图片

操作实践

前提条件

1)开通云效高级版(可免费试用 1 个月),确保在云效应用交付 AppStack 内打开研发流程功能 [ 1] 了。

2)开通 MSE 微服务治理 [ 2]

3.1 开启 MSE 微服务治理

1)将 ACK 微服务应用接入 MSE 治理中心。具体操作,请参见 ACK 微服务应用接入 MSE 治理中心 [ 3]

2)创建 MSE nacos,并复制其内网域名。具体操作,请参见创建 Nacos 引擎 [ 4]

3)创建 MSE 云原生网关,并关联第一步创建的 Nacos。具体操作,请参见创建 MSE 云原生网关 [ 5] 和新建服务来源 [ 6]

3.2 在云效 AppStack 创建三个应用,部署应用基线版本

图片

在云效 AppStack 创建三个应用,部署应用基线版本。

我们以 spring-cloud-a 应用为例,详细介绍一个应用的配置流程:

第 1 步:应用关联代码仓库,可以在云效 Codeup 中导入示例代码:https://github.com/aliyun/alibabacloud-microservice-demo.git

图片

第 2 步:应用环境配置,一个应用通常可以划分为测试环境(test)、预发环境(pre)、灰度环境(gray)、生产环境(prod),环境关联不同的部署资源(如 K8s 集群),部署服务分别用于不同阶段进行测试验证,并最终提供线上服务。

图片

第 3 步:应用 Kubernetes 部署编排 YAML 配置。

图片

  • 将容器镜像定义成占位符 {{ .AppStack.image.backend }},由流水线运行时传入构建好的镜像。
  • 在应用配置的 spec.template.metadata.labels 下加入 MSE 基本配置及灰度相关。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/你好赵伟/article/detail/287997
推荐阅读
相关标签