关于java:SpringCloud-应用在-Kubernetes-上的最佳实践-线上发布可灰度

60次阅读

共计 2649 个字符,预计需要花费 7 分钟才能阅读完成。

作者 | 白寂  阿里云开发工程师

导读:前三篇文章咱们介绍了利用的开发和部署,那么在利用胜利上云后,我就要面对利用的治理话题了,这一篇咱们来看看如何做线上公布,并且是可灰度的。

相干文章举荐:

  • 《SpringCloud 利用在 Kubernetes 上的最佳实际 —— 开发篇》
  • 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 部署篇(开发部署)》
  • 《SpringCloud 利用在 Kubernetes 上的最佳实际 — 部署篇(工具部署)》

前言

在新版本上线时,无论是从产品稳定性还是用户对新版本的接受程度上思考,间接将老利用降级到新版本利用都有很大危险的。咱们个别的做法是,保障新老版本同时在线,并且先将少部分流量切换到新版本利用上,同时在此期间对新版本的利用申请进行察看。在确认新版本没有问题后,再逐渐将更大比例的流量切换到新版本上。这个过程的外围是能够对流量的流入转发规定进行配置,EDAS 的金丝雀公布能力,提供了多个版本同时在线的能力,并且提供了灵便的配置规定来给不同的版本进行流量调配。

部署在 EDAS Kubernetes 集群中的 Spring Cloud 微服务利用,在新版本公布的时候能够应用金丝雀公布进行小规模验证,验证通过后再全量降级。

金丝雀公布配置

首先,进入 EDAS 的利用部署页面,对咱们要进行部署降级的利用进行公布,在这里咱们抉择金丝雀(灰度)公布。须要留神的是,对灰度公布的流量管制,以后只对非入口利用的 Dubbo 和 Spring Cloud 利用失效。所谓入口利用,即承接内部流量的第一个利用节点。并且若您的利用应用了 HPA、Rancher、Istio、或者依赖 Deployment.Metadata.Name 或 Deployment.Metadata.Uid 的性能与配置等 K8s 原生性能或配置时,请勿应用灰度公布或分批公布。否则,利用部署之后,这些 K8s 原生性能或配置将出现异常。

在发布页面,能够抉择通过上传 JAR 包或者填入 JAR 包地址的形式抉择要进行公布的新版本利用部署包。

在抉择好要进行公布的新版本利用部署包后,接下来进行公布策略的配置。这里分为两个局部:

  • 第一局部能够对公布批次进行设置,例如设置公布灰度批次,首批进行灰度的 pod 实例个数,分批间解决形式等;
  • 第二局部能够对流量灰度规定进行配置,咱们能够抉择按流量内容进行灰度或者简略地依照流量比例进行灰度,上面将具体介绍这两种公布策略配置。

设置公布策略

在批次公布这里咱们能够进行的配置有:

  • 首批灰度数量:在点击公布后,会首先将首批灰度数量个数的实例进行新版本的公布,为了保障利用的稳定性,首批灰度的实例数不能超过利用实例总数的 50%。比方以后实例数是 7 台,那么最多只能抉择 3 台作为首批灰度的实例;
  • 残余批次:首批灰度公布实现后,残余的利用实例将依照此处指定的批次公布实现;
  • 分批间解决形式:残余批次间的解决形式可抉择手动或者主动,若抉择主动,则残余的几个批次将在前一批公布实现后进行主动公布,主动公布的批次距离也可进行配置,例如配置每批次在公布实现后,30 分钟后主动进行下一批次的公布;
  • 批次内部署距离:每一批次内,如果此批次内要公布的利用实例数大于 1,则要进行此配置指定批次内实例部署距离。

在上面的例子中,咱们当初有 7 个 pod 利用实例,抉择首批对 2 个实例进行灰度降级。在首批 2 个实例的灰度公布实现后,将剩下的 5 个实例分 3 个批次进行公布。这 3 个批次的批次间解决形式抉择主动公布,在以后批次公布实现 30 分钟后主动进行下一批次的公布。同时,因为第 2 批次和第 2 批次内实例个数为两台,因而抉择批次内两台实例部署距离为 60 秒。在发布页面右侧能够对咱们的公布策略配置信息进行预览。

设置灰度规定

目前反对 按内容灰度 按比例灰度 两种形式设置灰度规定。按申请内容进行灰度反对将申请内容合乎指定灰度规定条件的流量作为灰度流量,进入到灰度实例中,例如,抉择用户 ID 模 100 小于等于 40 的流量作为灰度流量进入灰度实例进行解决,而用户 ID 模 100 大于 40 的依然进入非灰度实例进行解决,如图 1 所示。而按流量比例进行灰度是指,将指定比例的申请流量作为灰度流量进入灰度实例进行解决,例如指定 40% 的流量作为灰度流量,如图 2 所示。


(图 1)

(图 2)

按申请内容进行灰度

按申请内容进行灰度能够进行上面指定参数的配置,来决定有哪些申请内容特色的流量将作为灰度流量进入灰度实例中。

  • 协定类型:可抉择 Spring Cloud 和 Dubbo,这里咱们次要介绍 Spring Cloud 协定。在 Spring Cloud 协定下须要对 HTTP 申请门路进行配置;
  • 条件模式 :针对上面配置的的条件列表,可配置条件模式为: 同时满足下列条件 满足下列任一条件。符合条件模式的申请将作为灰度流量;
  • 条件列表:Spring Cloud 协定下可别离对 Cookie、Header 和 Parameter 3 种申请内容进行条件配置。

按比例进行灰度

按比例灰度即 设置 流量比例,而后申请流量会按配置的比例被转发到以后的灰度分组中进行解决。

灰度公布并验证新版本利用是否合乎预期

配置好公布配置后,即可开始进行灰度公布,EDAS 将先在指定的灰度分组中部署新版本利用,可在进入 变更详情 页面查看部署进度和状态。如果在灰度公布时,发现新版本有问题,还能够终止变更并对利用进行回滚。

在灰度的公布过程中,可对利用进行监控,以监控灰度流量是否合乎预期,同时能够对利用状态进行新老版本的比照。在以后批次的灰度流量验证实现后,在变更详情页面单击开始下一批,实现后续分批公布。如果在验证过程中,发现新版本利用有问题,能够在变更详情页面右上角单击立刻回滚。在弹出的立刻回滚对话框确认回滚的影响,而后单击回滚。

对于如何监控灰度流量,能够参考 EDAS 文档《监控灰度流量》。

灰度公布后,在根本信息页面查看部署包是否为新部署的利用版本。在实例部署信息页面查看利用实例的运行状态是否为运行失常。

结语及其后续

本章咱们介绍了如何对 EDAS Kubernetes 集群上的 Spring Cloud 利用进行灰度公布,在灰度公布过程中,咱们能够灵便地配置公布策略、灰度规定以及在公布过程中对流量及利用状态进行监控,并且提供了终止回滚等操作,最大水平地保障利用可能平滑地进行版本升级。接下来的文章中,咱们将具体介绍在公布过程中如何对利用进行监控。

“阿里巴巴云原生关注微服务、Serverless、容器、Service Mesh 等技术畛域、聚焦云原生风行技术趋势、云原生大规模的落地实际,做最懂云原生开发者的公众号。”

正文完
 0