Serverless 应用中心 灰度发布

灰度发布(又名金丝雀发布)是指在黑与白之间,能够平滑过渡的一种发布方式。Serverless 应用的灰度发布是配置云函数别名的流量规则,针对别名中两个不同版本的云函数进行流量规则配置。Serverless Cloud Framework 中可通过默认别名进行流量规则配置。

相关产品
Serverless 应用中心 产品页,含版本规格、价格与购买入口。

一、默认别名

默认别名是配置云函数的 $default(默认流量)别名。该别名中固定有两个云函数版本,一个为 $latest 版本,一个为最后一次函数发布的版本。部署时配置的 traffic 参数为 $latest 版本流量占比,默认另一部分流量切到当前云函数最后一次发布的版本。

每次上线一个新功能,执行 scf deploy 会部署到 $latest 版本上。我们将切部分流量在 $latest 版本上进行观察,然后逐步将流量切到 $latest 版本。当流量切到 100% 时,我们会固化这个版本,并将流量全部切到固化后的版本。

二、命令说明

注意:说明:

注意:旧版本命令为 scf deploy –inputs.key=value。Serverless CLI V3.2.3 后命令统一格式为 scf deploy –inputs key=value ,旧版本命令在新版本 Serverless CLI 中不可用,升级 Serverless CLI 的用户请使用新版本命令。

三、函数发布版本

部署时发布项目下所有函数版本:

scf deploy –inputs publish=true

四、函数流量设置

部署后切换 20% 流量到 $latest 版本:

scf deploy –inputs traffic=0.2

·Serverless Cloud Framework 流量切换修改的是云函数别名为 $default 的流量规则。

·每次配置针对的是 $latest,最后一次云函数发布的版本的配置。

·traffic 配置的值为 $latest 版本对应的流量占比,最后一次云函数发布的版本的流量占比为 1-$latest 流量占比。例如 traffic=0.2,实则配置 $default 的流量规则为 {$latest:0.2, 最后一次云函数发布的版本:0.8}。

·如果函数还未发任何固定版本,只存在 $latest 版本的函数情况下,traffic 无论如何设置,都会是 $latest:1.0。

五、操作步骤

当一个功能测试完毕,需要进行灰度发布,操作如下:

1. 配置生产环境信息到 .env 文件(STAGE=prod 为生产环境):

TENCENT_SECRET_ID=xxxxxxxxxxTENCENT_SECRET_KEY=xxxxxxxxSTAGE=prod

2. 部署到线上环境 $latest,并切换 10% 的流量在 $latest 版本(90% 的流量在最后一次发布的云函数版本 N 上):

scf deploy –inputs aliasFunctionVersion=N aliasName='$DEFAULT' additionalVersionWeights='[{"version":"$LATEST","weight":0.1}]'

3. 对 $latest 版本进行监控与观察,等版本稳定之后把流量 100% 切到该版本上:

scf deploy –inputs aliasFunctionVersion=N aliasName='$DEFAULT' additionalVersionWeights='[{"version":"$LATEST","weight":1}]'

4. 流量全部切换成功后,对于一个稳定版本,我们需要对它进行标记,以免后续发布新功能时,如果遇到线上问题,方便快速回退版本。部署并发布函数版本 N+1,切换 100% 流量到版本 N+1:

scf deploy –inputs publish=true aliasName='$DEFAULT' additionalVersionWeights='[{"version":"$LATEST","weight":0}]'

赞 (0)
上一篇 4天前
下一篇 4天前