详情页标题前

腾讯云Serverless应用中心灰度发布-同尘科技

详情页1

概述

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

默认别名

默认别名是配置云函数的 $default(默认流量)别名。该别名中固定有两个云函数版本,一个为 $latest 版本,一个为最后一次函数发布的版本。部署时配置的 traffic 参数为 $latest 版本流量占比,默认另一部分流量切到当前云函数最后一次发布的版本。每次上线一个新功能,执行 scf deploy 会部署到 $latest 版本上。我们将切部分流量在 $latest 版本上进行观察,然后逐步将流量切到 $latest 版本。当流量切到 100% 时,我们会固化这个版本,并将流量全部切到固化后的版本。

腾讯云Serverless应用中心灰度发布-同尘科技



命令说明

说明旧版本命令为 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 traffic=0.1 

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

scf deploy --inputs traffic=1.0 

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

scf deploy --inputs publish=true  traffic=0 

自定义别名

自定义别名可以通过命令创建别名,指定两个云函数版本配置流量比。使用自定义别名进行灰度发布时,先将新功能发布到一个新版本上,然后修改别名配置,切部分流量在该版本上进行观察,最后逐步将流量切到该版本。自定义别名提供了灵活的版本切换,配置相对于默认别名的方式更复杂,适用于对灰度发布能力要求比较高的业务场景。说明:目前自定义别名只支持云函数(SCF)组件,其他组件请使用默认别名方式配置。

腾讯云Serverless应用中心灰度发布-同尘科技



命令说明

函数发布版本

不部署直接给函数 my-function 发版本:

scf  publish-ver --inputs  function=my-function

创建别名

给云函数 my-function 创建别名 routing-alias,路由规则为版本1流量为50%,版本2流量为50%:

scf  create-alias --inputs name=routing-alias  function=my-function  version=1  config='{"weights":{"2":0.5}}'

更新别名

更新云函数 my-function 别名 routing-alias 的流量规则为版本1流量为10%,版本2流量为90%:

scf update-alias --inputs name=routing-alias  function=my-function  version=1 config='{"weights":{"2":0.9}}'

列举别名

列举云函数 my-function 别名 routing-alias:

scf list-alias --inputs function=my-function

删除别名

删除云函数 my-function 的别名 routing-alias:

scf delete-alias --inputs name=routing-alias  function=my-function

操作步骤

当一个功能测试完毕,需要进行灰度发布,操作如下:1. 配置生产环境信息到 .env 文件(STAGE=prod 为生产环境):

TENCENT_SECRET_ID=xxxxxxxxxxTENCENT_SECRET_KEY=xxxxxxxxSTAGE=prod 

2. 创建别名 alias-prod,配置 alias-prod 的流量规则(假设目前线上稳定版本为 N):

scf create-alias --inputs function=my-function name=alias-prod version=n config='{"weights":{"$LATEST":0}}'

3. 配置 my-function 函数的 serverless.yml 中触发器对应的别名引用:

events: # 触发器  - timer: # 定时触发器      name: #触发器名称,默认 timer-${name}-${stage}      parameters:        qualifier: alias-prod #配置别名为 alias-prod        cronExpression: '*/5 * * * *' # 每 5 秒触发一次        enable: true        argument: argument # 额外的参数

4. 部署到线上环境 $latest,并发布该新版本(假设函数名为 my-function,发布后的新版本为 N+1):

scf deploy scf publish-ver --inputs function=my-function

5. 配置云函数别名流量规则,切换10%的流量到 N+1 版本(假设原线上版本为 N,云函数中的别名为 alias-prod):

scf update-alias --inputs function=my-function name=alais-prod version=n config='{"weights":{"n+1":0.1}}'

6. 持续观察监控,稳定后切换100%到版本 N+1 上:

scf update-alias --inputs function=my-function name=alais-prod version=n config='{"weights":{"n+1":1}}'



官网1折活动,限时活动,即将结束,速速收藏
同尘科技腾讯云授权服务中心。
购买腾讯云产品享受折上折,更有现金返利。同意关联立享优惠

转转请注明出处:https://www.yunxiaoer.com/148995.html

(0)
上一篇 2023年12月9日
下一篇 2023年12月9日
详情页2

相关推荐

  • 腾讯云对象存储创建模板

    功能描述 创建语音合成模板。 授权说明 授权策略中 action 设置为 ci:CreateMediaTemplate 。查看所有 action。 服务开通 使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶。 使用限制 使用该接口时,请先确认相关限制条件。详情请参见 使用限制。 请求 请求示例 POST /template HTTP/1.…

    腾讯云 2023年12月9日
  • 腾讯云内容分发网络CDN变更计费方式

    详细说明 自2022-03-16 00:00:00点后开通 ECDN 服务的客户,您的计费周期将默认为按小时的结算方式,即按请求数+超额流量小时结算。注意 按小时结算不支持变更计费方式到按月结算;若您为腾讯云签约大客户且希望变更为按月结算方式,请联系您对应的腾讯云商务经理。在此计费周期下,您每小时都会收到一条账单,您可前往 腾讯云控制台-费用中心 查看或导出…

    腾讯云 2023年12月9日
  • 腾讯云容器服务Ingress 证书配置同尘科技

    操作场景 本文档介绍 Ingress 证书使用相关的内容,您可在以下场景中进行 Ingress 证书配置:创建 Ingress 选用 HTTPS 监听协议时,选用合适的服务器证书能够确保访问安全。为所有的 HTTPS 域名绑定同一个证书,简化配置 Ingress 下所有 HTTPS 规则的证书,使更新操作更加便捷。为不同的域名绑定不同的证书,改善服务器与客户…

    2023年12月9日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 腾讯云对象存储取消海报合成任务

    功能描述 取消一个任务,只有未执行的任务才可以被取消。 授权说明 授权策略中 action 设置为 ci:CancelMediaJob 。查看所有 action。 服务开通 使用该功能需提前开通数据万象,并绑定存储桶。详情请参见 绑定存储桶。 使用限制 使用该接口时,请先确认相关限制条件。详情请参见 使用限制。 请求 请求示例 PUT /jobs/<…

    腾讯云 2023年12月9日
  • 腾讯云容器服务多 Pod 共享网卡模式同尘科技

    使用原理 VPC-CNI 多 Pod 共享网卡模式使用原理图如下所示: 集群网络是用户的 VPC,节点和容器子网属于该 VPC。容器子网可以选择多个 VPC 内的子网。可设置是否开启固定 IP。您可参考 固定 IP 模式使用说明。 IP 地址管理原理 非固定 IP 模式  TKE 组件在每个节点维护一个可弹性伸缩的 IP 池。已绑定的 IP 数量将…

    2023年12月9日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。