特定微服务的蓝绿部署

Posted

技术标签:

【中文标题】特定微服务的蓝绿部署【英文标题】:Blue Green Deployment for particular MicroService 【发布时间】:2017-04-28 11:56:09 【问题描述】:

我正在使用 Kubernetes 集群来部署我们的一堆微服务。我能够同时管理所有微服务的蓝绿部署,如下所示

我的问题是,有时我只想部署 App1 或 App2 或两者都不是所有微服务。这可以使用蓝绿部署来管理吗?

Implemented Things:(想用蓝绿策略只部署App3)

如果我使用蓝色部署运行 BlueApp3,并且 GreenApp1 和 GreenApp2 重新启动 BlueApp3。然后我测试了我的整个应用程序

一旦它可以正常工作,我会将 BlueApp3 转换为 GreeApp3,如下所示

    这个策略好吗? 如果不是,那为什么? 是否需要一次部署所有的 MicorServices 来实现蓝绿部署(会导致不必要的部署) 对于一个特定的微服务,我所遵循的蓝绿部署策略的优缺点是什么。

【问题讨论】:

【参考方案1】:

我建议将您的部署策略从组合完全切换到每个微服务。这包括您将不再运行全蓝或全绿部署这一事实。

您可以为给定的服务启动新的部署,当它到位时,将您的 kubernetes 服务下的选择器从 app: app2, flavor: green 切换到 app: app2, flavor: blue,当认为已验证时,只需删除绿色的部署对象。

在 k8s 上做蓝绿色的一个挫折是你没有真正利用 k8s 部署所提供的潜力以及它们对 RollingUpdates 的原生支持

【讨论】:

您能否详细说明您提到的使用 k8s 进行蓝绿部署的挫折? kubernetes.io/docs/user-guide/deployments 使您能够通过更新部署规范来滚动更新服务。使用 B-G 方法,您必须自己编写大部分脚本 您可以使用 bg-kube 轻松实现上述每个微服务的 B-G 方法,只需使用 kubernetes 清单和可选的 .env 文件。

以上是关于特定微服务的蓝绿部署的主要内容,如果未能解决你的问题,请参考以下文章

微服务从入门到精通:微服务的蓝绿发布及灰度发布

Spring微服务灰度发布(热部署)的实现(二)

微服务微服务架构下你不得不知的3种部署策略

Libra-Platform微服务平台之全链路蓝绿灰度发布

如何利用Kubernetes和Istio实现蓝绿部署?

蓝绿部署金丝雀发布(灰度发布)AB测试……