跳至主要內容
如何使用Spinnaker和Kubernetes进行数据库变更发布?

将应用程序部署到 Kubernetes 时,有很多选择。像 Helm 和 Ksonnet 这样的工具使得打包应用程序并将其部署到多个 Kubernetes 环境变得非常简单。但是,这些工具只能解决部分问题。部署到生产很少像 helm install my-chart 一样如此简单。他们可以涉及多个步骤,并保证所涉及的应用程序正常运行。我从 Kubernetes 用户那里听到的一个最常见的问题是“如何部署我的数据库变更?”。这是我一遍又一遍地问自己的问题。在 Skuid ,我们花了很多时间试图找出最安全和高可用的方式来执行这些数据库迁移,作为我们部署 Pipeline 的一部分。我们写的代码来做到这一小步在我们的 Pipeline 步骤是很复杂的。


靳日阳大约 5 分钟架构运维DevOpsNetflixSpinnakerKubernetes
Netflix 的上线工具 Spinnaker

Spinnaker 的介绍

Spinnaker

Spinnaker 是 Netflix 开源出来的持续交付工具,目的是为研发团队提供灵活的持续交付流水线,并且支持部署到测试/生产环境。Netflix 目前通过 Spinnaker 实现每天4000次的发布。它的优势在于:

  • 支持多种云平台。目前支持 AWS EC2(Netflix 的机器大部分都在亚马逊),谷歌云,Kubernetes,Azure,Openstack 等,目前正在支持甲骨文的物理机和 DC/OS。
  • 自动化发布。可以集成测试脚本进行测试,并且能够管理测试,线上环境的机器,实现动态扩容,和服务的下线。
  • 发布原子化。由于 Netflix 的平台已经实现微服务化,每个团队使用 Spinnaker 独立维护服务的发布,所以 Spinnaker 的设计特别适合于微服务持续交付的场景。
  • 预置了软件发布的最佳实践。通过脚本实现不可变基础设施,使得发布时候能够更容易的进行回滚,和扩容。当你的团队还在为每个应用写脚本支持蓝绿发布时,Spinnaker 已经提供了从界面上进行蓝绿发布,金丝雀发布等策略的配置。
  • 社区强大。Netflix,谷歌,微软等等都已经在社区贡献代码。

王青大约 5 分钟架构运维NetflixSpinnakerDevOps