容器服务ACK发布管理-灰度发布概念
灰度发布,又称金丝雀发布,是将应用的旧版本A与新版本B同时部署在环境中,业务请求可能会被路由到版本A的后端上,也可能会被路由到版本B的后端上。您可以自定义灰度发布策略,快速调整版本A和B的流量占比。
灰度发布可以在发布新版本应用时:
- 自定义控制新版本应用流量比重
- 渐进式完成新版本应用的全量上线
- 最大限度地控制新版本发布带来的业务风险,
- 降低故障带来的影响
- 同时支持快速回滚
灰度发布流程图

容器服务ACK发布管理-灰度发布实现
灰度发布是可以帮助您渐进式更新Deployment的工具
- 它能结合路由控制器(Ingress Controller)实现多版本共存,发布暂停,流量百分比切换,健康检查等功能
- 极大解放灰度发布过程中的手动操作,全自动化实现线上灰度流量切换
发布管理-安装灰度发布组件
在ACK中安装对应的组件后才可以使用灰度发布功能。 在灰度发布页面,直接通过单击开始安装即可实现对应的组件安装。 1.登录容器服务管理控制台。 2.在控制台左侧导航栏中,单击集群。 3.在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。 4.在集群管理页左侧导航栏中,单击灰度发布。 5.单击开始安装。完成灰度发布组件安装后,控制台自动跳转到灰度发布页面。
发布管理-使用手动发布模式创建灰度发布
在使用灰度发布的手动发布方式的时候,您需要创建一个Ingree、Service和Deployment结构的应用。目前灰度发布只支持基于Deployment和Ingress的灰度发布。
本实践举例介绍使用手动发布方式的灰度发布流程。
-
步骤一:创建测试应用
本文使用以下YAML文件模板作为测试示例。该示例使用Deployment部署一个Web应用,并通过路由(Ingress)向外暴露服务(Service)。

-
步骤二:创建灰度发布 创建灰度发布时,设置上述创建的Deployment、Service、Ingress,然后设置发布方式为手动发布。
完成创建灰度发布后,单击创建的灰度发布名称,发布状态显示初始化完毕。如果显示初始化中的话,可以多次单击刷新。 -
步骤三:执行灰度发布 初始化完毕后,就可以进行灰度发布。 开始灰度发布前,您需要先更新一下应用。
本文示例以更新镜像tag为例,修改镜像tag中的green为blue。先发布两个Pod为新版本,同时将新版本的灰度流量设置为10%。 1.单击目标灰度发布名称,然后在详情页面,单击发布对象名称后面的编辑图标。 2.在查看YAML面板中,将green修改为blue,然后单击确定。 3.在灰度发布基本信息区域,编辑当前权重[0-100]为10,新版容器组副本数[0-4]为2。
可以看到,新版本的Pod已经创建。这时候访问应用观察流量情况,可以看到流量中绿色占比90%,蓝色占比10%。

根据业务的实际情况,不断调整新旧版容器数量,将旧版Pod缩容,新版Pod扩容,然后将更多的流量导入到新版本的Pod中。当测试完毕且没有问题时,单击页面右上方的确认发布,完成此次发布。发布成功后,可以查看流量情况。当业务的所有流量都转向了新的Pod时,就完成了一次应用的发布。您可以单击页面右上方的完成,结束此次发布动作。
查看历史记录
每次发布完成后,您可以查看发布的记录:在灰度发布页面的历史记录区域,您可以查看所有创建的灰度发布的发布记录。在每个创建的灰度发布详情页面下方的发布日志区域,查看发布的过程。
发布管理-使用自动发布模式创建灰度发布
容器服务ACK的灰度发布功能除了手动发布方式外,还提供了自动发布方式。自动发布模式可以让您全自动化地完成灰度发布流程。
- 步骤一:创建测试应用 本文使用以下YAML文件模板作为测试示例。该示例使用Deployment部署一个Web应用,并通过路由(Ingress)向外暴露服务(Service)。
-
步骤二:创建灰度发布 创建灰度发布时,设置上述创建的Deployment、Service、Ingress,然后设置发布方式为自动发布。

完成创建灰度发布后,发布流程会全自动化地进行。 当一个新版本的Pod创建出来后,流量切换百分之20至新版本Pod,此时旧版本的一个Pod会被删除,然后系统会再继续创建一个新的Pod删除一个旧版Pod,以此类推,直到完毕。
在配置自动发布模式时,需要注意以下两点:
- 和手动发布不同,使用自动发布模式时,需要在创建灰度发布的时候编辑发布对象里面的YAML以设置需要更新的新版本Deployment。本文示例将发布的版本镜像blue修改成green。
- 需要设置权重调整步长。该值设置每次以多少步长来调整新版本的权重流量。本文以20为例,期初会以0%的流量切至新版本。随着新版本的Pod创建出来后,第一次切换20%的流量至新版本Pod,然后随着新版本的Pod数量变多,流量逐步切换到40%,60%,80%,直到100%。
发布管理-基于Helm的发布管理
阿里云Kubernetes服务集成了Helm包管理工具,帮助您快速构建云上应用,因为chart可以多次发布(release),这就带来一个发布版本管理的问题。因此,阿里云Kubernetes服务提供了发布功能,通过Web界面的方式对通过Helm发布的应用进行管理。
前提条件
- 您已经成功创建一个Kubernetes集群.
- 您已经使用应用目录或服务目录功能,安装了Helm应用,本例中是一个tf-model应用。
Helm是由Deis发起的一个开源工具,有助于简化部署和管理Kubernetes应用。 Helm可以理解为Kubernetes的包管理工具,可以方便地发现、共享和使用Kubernetes构建的应用。
查看发布的详情
1.登录容器服务管理控制台。 2.在控制台左侧导航栏中,单击集群。 3.在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。 4.在集群管理页左侧导航栏中,单击应用。 5.单击Helm页签,进入发布列表页面。 6.以tf-model为例,您可查看发布的详情信息,单击右侧的详情,进入该发布的详情页面。 可以查看该发布的当前版本和历史版本等信息,当前版本为1,无历史版本。 还可查看tf-model的资源信息,如资源名称、资源类型,以及查看YMAL信息。 7.单击参数页签,您可查看该Helm包安装的参数配置。
更新发布的版本
1.在控制台左侧导航栏中,单击集群。 2.在集群列表页面中,单击目标集群名称或者目标集群右侧操作列下的详情。 3.在集群管理页左侧导航栏中,单击应用。 4.单击Helm页签,进入发布列表页面。 5.以tf-model为例,您可更新该发布,单击右侧的更新,弹出更新发布对话框 6.在更新发布对话框中修改相关参数,随后单击更新,可对该发布进行更新。
在发布列表页面,您可以看到当前版本变为2,您可以在历史版本菜单下找到版本1,单击回滚到该版本,可进行回滚。
删除发布
1.单击Helm页签,进入发布列表页面。 删除应用 2.以tf-model为例,您可删除该发布,单击右侧的删除。 确定要删除应用 ack-alibaba-cloud-metrics-adapter? 3.在删除应用对话框中,勾选是否清除发布记录,然后单击确定,您可以删除tf-model应用,其包含的service、deployment等资源都会一并删除。