对于部署在K8s集群中的Spring Cloud或Dubbo微服务应用,为了确保升级操作的安全性,可以使用金丝雀发布(即灰度发布)进行小规模验证,验证通过后再全量升级。
使用限制
- HSF应用:不支持金丝雀发布。
- Dubbo应用:没有使用限制。
- Spring Cloud应用:如果应用依赖Deployment.Metadata.Name或Deployment.Metadata.Uid的功能与配置,请勿使用金丝雀发布,否则发布后该原生功能将出现异常。
操作步骤
- 登录EDAS控制台。
- 在左侧导航栏,单击应用管理 > 应用列表,在顶部菜单栏选择地域,并在页面上方选择微服务空间。
- 在应用列表页面的集群类型下拉列表中选择容器服务/Serverless K8s集群,然后单击目标应用名称。
- 在应用总览页面右上角选择部署 > 部署。
- 在选择部署模式页面的金丝雀发布(灰度)区域右上角单击开始部署。
- 在金丝雀发布(灰度)页面设置新版本应用的部署参数、发布策略和灰度规则,然后单击确定。
- 设置部署参数。
表 1. 部署参数说明 参数 描述 配置镜像(仅适用于镜像部署的应用) 镜像不可更改,只能更新镜像版本。 应用运行环境(适用于JAR包和WAR包部署的应用) 需要和上一次部署保持一致。 - JAR包部署:应用运行环境为标准Java应用运行环境,不可更改。
- WAR包部署:应用运行环境为Apache Tomcat,类型不可更改。如果需要,可以更换版本。
Java环境(适用于JAR包和WAR包部署的应用) 根据需求在列表中选择。 当前环境 显示当前应用的运行环境。仅是JAR包和WAR包部署的应用,才会显示当前应用的运行环境。EDAS会自动将您应用的Java环境或应用运行环境升级到最新版本。 文件上传方式(适用于JAR包和WAR包部署的应用) 部署包类型(WAR包或JAR包)需要和上一次部署保持一致,不可更改。上传方式可以根据实际需求选择上传部署包(上传JAR包或上传WAR包)或输入部署包地址两种方式(JAR包地址或WAR包地址)。 版本(适用于JAR包和WAR包部署的应用) 部署包版本,可以用时间戳作为版本号。 时区(适用于JAR包和WAR包部署的应用) 根据实际需求在列表中选择。 服务注册与发现配置 选择注册中心的运维方式。如何选择,请参见选择注册中心运维方式。 - 在发布策略区域配置发布策略参数。
表 2. 发布策略参数说明 参数 说明 首批灰度数量 首批发布的应用实例数量。右侧会显示应用当前实例数,为了保证应用稳定性,灰度实例数不能超过应用实例总数的50%。 说明 灰度分组发布后,必须手动开始剩余分批发布。剩余批次 首批发布后,剩余的应用实例按照此处设定的批次完成分批发布。 分批间处理方式 支持以下处理方式: - 自动:根据间隔自动分配分批发布。间隔即剩余批次间的发布时间间隔,单位为分钟。
- 手动:手动触发下一个批次的发布。
说明 仅当剩余批次大于1时,才会显示分批间处理方式。批次内部署间隔 每一批次内,如果应用实例数大于1,则应用实例会按此时间间隔部署,单位为秒。 右侧的发布策略配置信息会根据配置显示金丝雀发布流程。
- 设置灰度规则。
EDAS支持的灰度规则包括按内容灰度和按比例灰度。
表 3. 灰度规则参数说明 页签 参数 说明 按内容灰度 协议类型 - Spring Cloud:需要设置path。
- Dubbo:需要选择服务和方法。
条件模式 选择同时满足下列条件或满足下列任一条件。 条件列表 - Spring Cloud:可根据Cookie、Header或Parameter类型设置具体的参数。
- Dubbo:根据应用实际的参数、参数值获取表达式设置。
按比例灰度 流量比例 流量会按配置的比例被转发到当前的灰度分组。 说明 单击创建流量规则,即可创建多个入口流量规则,多个规则可以同时生效。 - 可选:配置应用高级设置。
金丝雀发布启动后,EDAS将先在指定的灰度分组中部署新版本应用。变更记录页面将显示部署进度和状态。
说明 如需监控灰度流量是否符合预期,请参见监控灰度流量。 - 设置部署参数。
- 灰度流量验证完成后,在变更记录页面右侧单击开始下一批,完成后续分批发布。如果在验证过程中发现新版本应用有问题,可以在变更记录页面右上角单击回滚,并在弹出的确认对话框单击确认。
结果验证
金丝雀发布完成后,在应用总览页面顶部查看部署包是否为新部署的应用版本。