更新时间:2024-11-22 GMT+08:00

灰度发布方式升级组件版本配置

请勿通过本操作和ServiceComb引擎同时执行组件微服务灰度发布升级,否则会导致本操作失效。通过ServiceComb引擎执行组件微服务灰度发布,请参考灰度发布

组件创建并部署完成后,根据业务需要,可使用ServiceStage提供的“灰度发布”方式升级单个组件版本配置。

如需批量升级同一个应用下的多个组件版本配置,请参考批量升级组件版本配置

灰度发布简介

“灰度发布”方式先选择一定比例的实例升级到新版本,将流量引入到新版本,验证新版本功能是否正常,然后通过滚动升级剩余的实例到新版本。可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以减少其影响度。

表1 灰度发布类型说明

类型

说明

微服务灰度发布

适用于容器部署方式部署的微服务组件(ServiceComb/Spring Cloud),灰度发布任务作用于微服务,可通过多个微服务协作,共同完成新特性的上线。

  1. 要求组件选择了Java、Tomcat或者Docker技术栈。
  2. 要求组件绑定了未开启安全认证的ServiceComb引擎且未开启多语言接入Mesher服务网格。
  3. ServiceComb要求2.7.8及以后版本。
  4. Spring Cloud Huawei要求1.10.4-2021.0.x及以后版本。

ELB灰度发布

适用于容器部署方式部署的通过ELB作为流量入口的任何类型组件,灰度发布任务作用于ELB。

前提条件

灰度发布方式升级组件版本配置

  1. 登录ServiceStage控制台。
  2. 选择以下任意方式进入组件“概览”页面:

    • “应用管理”页面,单击组件所属应用名称,在“组件列表”单击待操作组件名称。
    • “组件管理”页面,单击待操作组件名称。

  3. 单击页面右上角的“升级”
  4. 选择“灰度发布”
  5. 单击“下一步”,参考下表设置组件版本配置信息,其中带“*”标志的参数为必填参数。

    参数

    说明

    技术栈

    固定为创建并部署组件时选择的技术栈。

    *软件包/镜像

    固定为创建并部署组件时选择的组件来源。

    • 选择“源码仓库”,参考创建仓库授权创建授权,设置代码来源。
    • 选择软件包或者镜像包,则固定为创建并部署组件时选择的软件包类型(Jar、War、Zip)或者镜像包类型。由您选择的技术栈类型决定,具体情况请参考表1

    *上传方式

    选择软件包或者镜像包,重新选择已上传的软件包/镜像包,上传方式请参考组件来源说明

    说明:

    如果选择的是镜像包:

    • 可重新自定义容器名称:长度为1到63个字符,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。
    • 单击已选择的镜像包卡片右上角的,可修改镜像包来源。

    *编译命令

    组件来源是“源码仓库”、部署环境为Kubernetes类型且所选择的技术栈类型为Java、Tomcat、Node.js、Python、Php时支持设置“编译命令”

    • 使用默认命令或脚本:优先执行代码根目录下的build.sh,不存在则按照所选语言的通用方法编译,如Java语言的mvn clean package
    • 使用自定义命令:根据所选语言自定义编译命令,或修改build.sh文件后选择使用默认命令或脚本。
      须知:
      • 选择“使用自定义命令”时,请在echo、cat、debug命令中慎用敏感信息或者进行敏感信息加密,以免造成敏感信息泄露。
      • 在项目子目录下执行编译命令,需先进入项目子目录,再执行其余脚本命令。例如:

        cd ./weather/

        mvn clean package

    *Dockerfile地址

    组件来源是“源码仓库”、部署环境为Kubernetes类型且所选择的技术栈类型为Java、Tomcat、Node.js、Python、Php时支持设置“Dockerfile地址”

    “Dockerfile地址”即Dockerfile文件相对于项目的根目录(./)所在的目录,Dockerfile文件用于镜像构建。

    如果未指定“Dockerfile地址”,默认查找项目根目录下的Dockerfile;如果项目根目录下也没有Dockerfile文件,则根据选定的运行环境自动生成Dockerfile。

    *组件版本

    组件版本号,支持自动生成和自定义版本号。

    • 自动生成版本号:单击“自动生成”,默认以您单击“自动生成”时的时间来生成版本号,格式为yyyy.mmdd.hhmms,s取时间戳中秒数的个位值。例如:时间戳为2022.0803.104321,则版本号为2022.0803.10431。
    • 自定义版本号:输入格式为A.B.C或者A.B.C.D,A、B、C、D为自然数。例如,1.0.0或者1.0.0.0。
      须知:

      自定义版本号需唯一,请勿与该组件的历史版本号重复,否则会导致本次部署记录覆盖掉相同版本的历史部署记录。

    *容器名称

    组件部署方式为容器部署且技术栈不是Docker时,您可以自定义容器名称。

    容器名称要求为长度为1到63个字符的字符串,可以包含小写英文字母、数字和中划线(-),并以小写英文字母开头,小写英文字母或数字结尾。

    资源

    您可以根据需要自定义“CPU配额”“内存配额”,设置组件运行可以使用的最大/最小CPU核数(Core)和内存数量(GiB),从而选择性地为每个组件的实例设定所需要的资源数量。

    当您为组件实例指定了资源“申请”时,CCE就利用该信息决定将组件实例调度到哪个节点上;当您为组件实例指定了资源“限制”时,CCE就可以确保运行的组件实例占用的资源不会超出所设限制。CCE还会为组件实例预留所申请数量的系统资源。申请值和限制值的配置说明及建议,请参考资源限制指南

    如需修改,请勾选待修改项后输入新的配置值。不勾选表示不限制。

    JVM参数

    技术栈类型选择Java/Tomcat时可设置,用于配置Java代码运行时的内存参数大小。

    输入JVM参数,如-Xms256m -Xmx1024m,多个参数以空格间隔,不填则为空。

    Tomcat配置

    技术栈类型选择Tomcat时可设置,用于配置Tomcat请求路径、端口号等参数。

    1. 勾选“Tomcat配置”,弹出“Tomcat配置”对话框。
    2. 单击“使用示例模板”,根据业务要求编辑模板文件。
      说明:

      Tomcat配置,使用默认server.xml配置,上下文路径是"/",没有指定应用路径。

      如需自定义应用路径,请参考定制Tomcat Context path

    3. 单击“确定”

    容器配置

    请参考管理容器部署组件容器配置,根据您的实际业务需要进行设置。

    高级配置

    请参考管理容器部署组件高级配置,根据您的实际业务需要进行设置。

    *部署架构

    1. 单击“选择”,根据业务实际情况正确选择灰度升级时实例部署架构。
    2. 单击“确定”
    须知:

    所选部署架构必须准确匹配,否则会导致灰度失败,业务受损。

    单击“更改”,可重新选择部署架构。

    *灰度策略

    根据业务实际情况选择灰度升级策略。

    • 基于流量比例:根据需要灵活动态的调整不同服务版本的流量比例。
    • 基于内容:根据请求的内容控制其流向的服务版本。
      说明:

      ELB灰度发布,仅支持“基于流量比例”

    *选择流量比例

    “灰度策略”选择“基于流量比例”时,根据业务实际情况设置版本流量比例。

    • 灰度流量比例:引入到新版本的流量比例。
    • 当前流量比例:引入到当前版本的流量比例。

    *生效方式

    “灰度策略”选择“基于内容”时,根据业务实际情况设置灰度策略生效方式。

    • 满足任意条件:满足任意一条“匹配规则”时,灰度策略生效。
    • 满足所有条件:满足所有“匹配规则”时,灰度策略生效。
      说明:

      ELB灰度发布,仅支持“满足所有条件”

    *匹配规则

    “灰度策略”选择“基于内容”时,根据业务实际情况设置灰度策略生效的匹配规则。

    1. 单击“添加匹配条件”
    2. 设置“匹配类型”,当前仅支持基于“请求头”类型的匹配。
    3. 设置“参数名称”,即“匹配类型”对应的key值。
    4. 设置“条件类型”,即“条件值”满足的匹配规则。
      • 相等:“匹配类型”对应的value值和设置的“条件值”相等。
      • 匹配:“条件值”支持PERL兼容的正则表达式,仅微服务灰度发布支持。
      • 枚举:多个“条件值”以逗号(,)间隔。
    5. 设置“条件值”,即“匹配类型”对应的value值。

    *灰度实例新增模式

    根据业务实际情况选择灰度升级时新增实例的模式。

    • 蓝绿

      先增加与老版本实例同等数量的新版本实例,按照灰度规则将流量引入新版本实例。根据灰度规则验证完成后将所有流量引入新版本,再删除老版本实例。

      适用于业务容量无损、回滚快、集群中需要有剩余资源的场景。

      蓝绿模式需要组件实例数量在1个或以上。

    • 金丝雀(先增后减)

      新增指定数量的新版本实例,按照灰度规则将流量引入新版本实例。根据灰度规则验证完成后循环执行“删除固定数量的老版本实例,新增固定数量的新版本实例,同时配合流量调整”,直到所有的流量引入新版本实例,所有的老版本实例被删除。

      适用于业务容量无损、回滚慢、集群中需要有剩余资源的场景。

      金丝雀(先增后减)模式需要组件实例数量在2个或以上。

    • 金丝雀(先减后增)

      删除指定数量的老版本实例,新增指定数量的新版本实例,按照灰度规则将流量引入新版本实例。根据灰度规则验证完成后循环执行“删除固定数量的老版本实例,新增固定数量的新版本实例,同时配合流量调整”,直到所有的流量引入新版本实例,所有的老版本实例被删除。

      适用于业务容量有损、回滚慢的场景。

      金丝雀(先减后增)模式需要组件实例数量在2个或以上。

    说明:

    如需修改组件实例数量以满足灰度升级时新增实例的模式要求,请参考设置手动伸缩策略

    *缩容时间窗

    您可以设置一个缩容时间窗,用于在组件实例停止前保存重要数据。取值范围为0-9999秒,默认设置为30秒。

    例如某应用有两个实例,执行缩容操作,缩容后只剩一个实例,则您仍然可以在设置的时间窗内对即将要停止的实例进行某些操作。

  6. 单击“升级”

    等待组件状态由“升级/回滚中”转换为“运行中”,表示已成功完成组件版本配置升级。

后续操作

操作

说明

查看部署日志

您可以在“部署记录”列表中选择指定部署记录,在“系统监控”页签查看组件部署日志。

查看系统监控

通过灰度发布升级组件版本配置首批灰度发布完成后,选择“系统监控”页签,可以查看灰度版本和当前版本实例的CPU、内存使用情况。

修改灰度策略

通过灰度发布升级组件版本配置时首批灰度发布完成后,您可以根据实际业务需要,参考修改组件灰度发布策略修改组件的灰度发布策略。

自动完成剩余流程

通过灰度发布升级组件版本配置时首批灰度发布成功且验证新版本功能正常后,如需升级剩余组件实例版本到新版本,请执行以下操作:

  1. 选择“灰度发布”类型的“部署记录”
  2. 单击“自动完成剩余流程”
  3. 在弹出对话框,单击“确定”

    升级剩余的实例到新版本。

回滚组件版本配置

下列情况支持回滚组件版本配置:

  • 通过灰度发布升级组件版本配置首批灰度发布完成后
  • 组件全部实例的版本配置升级到新版本后

回滚到升级前组件版本配置,请参考回滚组件版本配置

重新部署组件

全部组件实例都升级到新版本后,您可以根据业务需要在“部署记录”列表中选择历史部署记录,并以此记录下的版本配置为模板,重新部署组件,请参考重新部署组件