金丝雀部署:优点,缺点,Kubernetes连接

金丝雀的部署是什么?

金丝雀部署软件版本的风险缓解策略。每一个新软件发布代表一个风险。金丝雀的部署可以限制造成的损害新版本包含bug或错误,通过快速、安全地回滚到前一个工作版本。

一只金丝雀版本的软件产品是一个新版本,包括特定的新功能,升级或配置更改。它包括所有必要的应用程序代码和依赖性,并发布到生产环境。然而,只有少数用户使用。

DevOps团队监控后使用和验证新版本的稳定性,它是所有用户发布的。如果版本不接受或问题被发现,系统回滚当前工作版本。

这是我们有关的一系列文章的一部分GitOps

本文简介:

金丝雀部署如何工作

在金丝雀部署、运行应用程序的两个版本在同一时间。旧版本称为“稳定版本”和新版本称为“金丝雀”。有两种方法来分发更新:滚动部署和并行部署。

滚动的部署

一个滚动的部署步骤介绍了变化。几个生产服务器开始运行金丝雀版本而其他人继续运行稳定版本。只有那些金丝雀服务器访问的用户可以看到更新。

DevOps团队可以监控的行为在金丝雀服务器上升级系统,检查错误和性能问题,和听到用户的反馈:

  • 如果金丝雀版本看起来不错,他们会继续金丝雀版本部署到其他服务器,直到所有服务器正在运行最新版本。
  • 如果有重大问题或用户不满意的变化,团队回滚升级服务器到原来的状态。

并行部署

在一个平行的金丝雀部署,而不是服务器在升级阶段,DevOps团队创建了一个全新的克隆环境和部署金丝雀版本。这需要复制当前的生产版本的硬件环境正在运行。

一旦金丝雀版本运行时,它显示的一小部分用户。这是使用路由器、负载平衡器、反向代理或其他业务逻辑。渐渐地,DevOps团队更多的用户从稳定版本迁移到金丝雀的版本,同时监测金丝雀。这一过程持续进行直到:

  • 所有用户加入金丝雀,没有重大问题
  • 检测到一个问题,在这种情况下交通路由回稳定版本

复制环境部署完成时,可以关闭,直到它需要另一个金丝雀测试。

金丝雀部署与青绿的部署

金丝雀部署可能被误认为是蓝色/绿色部署。都使用负载平衡器或并行生产环境中,由功能旗帜,降低软件的风险问题。但每一种都有其自己的细微差别。

蓝色/绿色的部署,当前的生产环境和新版本并行地运行。蓝色服务器当前版本和绿色服务器作为热备份,部署新软件发布。使用路由器,特性旗帜,或交通管理方案,从蓝色的绿色服务器流量逐渐过渡到100%的交通是绿色。转换完成后,验证了新环境,团队蓝色服务器升级到新版本,现在变成了热备份。

在一只金丝雀部署,DevOps的团队正在测试一种特定的新功能或系统更改,是否有正面或负面影响。,当前和新版本并行地运行。然而,切换处理在金丝雀部署中,只有一小部分用户暴露在新版本在较长一段时间。验证了改变后,它是所有用户推出。

相关内容:阅读我们的导游金丝雀部署和蓝色绿色(很快)

金丝雀部署:优点和缺点

金丝雀部署的好处

这里有几个关键的好处金丝雀部署方式:

  • 分阶段推出减少用户接触负面操作问题。一些用户仍然经验问题,但是金丝雀模型使这个数字低,因为很快发生回滚,这对个人用户最小化负面体验。
  • 简单的回滚的问题,与传统方法相比,回滚是复杂,耗费时间和风险。
  • 快速推出是一种选择权DevOps团队可以设计一个金丝雀测试只持续几分钟或几小时。这使得快速更新,支持较高的发展速度,减少周期时间。
  • 提高消费者的信任因为用户暴露在定期的新特性,同时看到软件供应商正在密切关注和照顾问题发生时。
  • 提高士气开发团队,因为部署新功能变得更容易和更有可能取得成功。

金丝雀部署的挑战

金丝雀部署是非常有益的,但是可以提高一些挑战:

  • 增加了复杂性团队必须准备额外的代码管理,服务和组件的金丝雀。它也可以复杂,管理多个API版本和数据库模式。
  • 软件部署在客户设备如果软件部署远程客户设备或远程客户网站,金丝雀更难以管理,需要更多的时间来确保客户更新和评估软件。
  • 自动化是必须的手动金丝雀部署容易出错和耗费时间。自动化过程执行定期金丝雀部署的关键,但它可以花点时间去构建金丝雀部署到现有CI / CD管道。
  • 可观察性金丝雀的部署需要能见度的用户行为,系统和应用程序的问题,测量相关的度量标准和确定金丝雀测试是成功的。在很多情况下,这种级别的可见性是不可用的。

你能做Kubernetes金丝雀部署?

有几种方法可以执行在Kubernetes金丝雀部署。实现它的一种常见方法是使用功能标志。管理软件开发的实践使用功能国旗被称为功能管理。

特色旗帜给DevOps团队更多的控制你的部署和通常不需要修改配置文件,进行完整的蓝绿色的部署,或执行回滚。功能安全管理允许团队部署金丝雀Kubernetes没有启动多个生产实例的应用程序。

实现Kubernetes金丝雀部署,一个团队可以开发一个新的功能,纪念这一特性国旗,新版本的应用程序部署到生产环境的一小部分。默认情况下,用户查看当前稳定版本新特性。团队可以指定一个“金丝雀集团”的用户,只有他们会看到新特性,标注特征标志。

如果金丝雀测试失败,团队可以简单地切换功能的标志“关闭”。不需要一个完整的回滚或重新分配。相反,如果金丝雀测试成功,功能标志仍然“on”,新版本可以推广到所有用户。

计划你的金丝雀部署策略

有几件事团队应该考虑在规划一个金丝雀部署:

  • 有多少用户会转换到金丝雀和在什么阶段?
  • 金丝雀运行多长时间?团队可能需要等待几天或几周为足够的客户升级和评估的新特性。
  • 指标将被记录,分析进展吗?这些可以包括应用程序的性能、错误和客户满意度。
  • 团队将如何确定金丝雀是否成功?这定义了评价指标的阈值,将决定成功。

这里有几个选项扩大金丝雀版:

  • 从1%的流量,然后扩大到10%,最后100%。这就是所谓的1-10-100,有两个步骤完全推出金丝雀。
  • 更大胆的方法是25-50-100,用户更快地接触到新特性。当然团队可以与任何其他值实验。
  • 另一个选择是将推出分解成更多的步骤示例中,10%,然后20%,然后50%,然后100%——推出三个步骤。这就是所谓的10-20-50-100。

最后需要考虑的是如何选择用户应该参与金丝雀测试。通常选择用户随机,但有一些其他的可能性。团队可以让金丝雀版地理区域一次。他们可以公开的金丝雀“早期采用者”客户签署了实验功能。另一个选择是公开金丝雀内部用户和员工。

金丝雀部署与海洋CD

Baidu
map