kubernetes – 发布系统支持灰度发布功能

灰度发布对于任何一个拥有较大业务流量的公司都是不可或缺的,我的公司也不例外。

没有灰度能力,那么发布业务一旦有问题就会造成业务损失,而如果有了灰度能力,那么可以做的事情就比较有想象空间了。

kubernetes能力限制

默认kubernetes的deployment只能支持滚动发布,并没有暂停点机制(自带的pause/resume很鸡肋)。

deployment持续滚动的前提是新POD健康检查OK即可,然而健康检查并不意味着业务逻辑是正确的,一旦发布业务逻辑错误代码损失将比较惨重。

因此,我们需要考虑自己实现灰度能力,同时寄希望于该方案简单、可靠。

最早想做灰度发布,潜意识方案就是一个这样的模式:

创建几个新POD就停住,老POD不删除,等业务确认继续,那么就全量发布成新POD。

至于要发布几个新POD之后暂停呢?

这个应该是可配置的。

那么如何设计一个这样的工作模式呢?

灰度方案设计

因为K8S发布系统已经在线上运行了,如何结合到现有发布系统中,尽量少的改动满足灰度需求是我的思考出发点。

所以,我选择了”蓝绿发布”的思路。

实际操作起来是简单粗暴的,只是在发布的时候增加一个”发布方式”选项即可:


你必须付费加入我的知识星球,为有效知识付费是对作者最好的回报。

二维码见下方 或者 右侧边栏。