Netflix 是业界微服务和 DevOps 组织的楷模,有大规模生产级微服务的成功实践。微服务有些公司甚至比 Netflix 做得更早,但 Netflix 大概是大规模生产级微服务做得最杰出的。
Netflix在开源社区有着非常大的贡献,发布了很多开源工具去做部署、打包等各种功能。Spinnaker 是 Netflix的一个开源项目,来做混合云环境部署,能够实现跨云平台的部署任务的编排。
在 Netflix 使用 Spinnaker 每天发布 4000 次变更到亚马逊的机器上。谷歌云也在用 Spinnaker 去做部署。他们构建时也是用 Jenkins,其中有一个过程叫 bake,bake 是把应用打包成一个镜像,然后把这个镜像用 deploy 去做部署。Netflix 的 DevOps实践非常值得关注,他们也有很多项目和开源工具都值得一看。
本文主要分析Spinnaker其开发模式、持续集成、部署实践。
服务架构
Spinnaker
是由多个微服务组成的。Deck
是前端页面;Gate
是API
网关Spinnaker UI
和所有api
调用程序都通过Gate与Spinnaker
进行通信;Orca
是编排引擎处理所有临时操作和管道;CloudDriver
是负责对云提供商的所有变更调用,并索引/缓存所有已部署的资源;Front50
用于保存应用程序,管道,项目和通知的元数据;Rosco
生成镜像,它为各种云提供商生成不可变的VM映像;Igor
用于通过Jenkins和Travis CI
等系统中的持续集成作业来触发管道,并且它允许在管道中使用Jenkins / Travis
阶段;Echo
负责消息通知;Fiat
负责用户权限管理;Kayenta
为Spinnaker
提供自动化的金丝雀分析;Halyard
是Spinnaker
生命周期配置管理工具。
代码仓库管理
Spinnaker的微服务是每个微服务都创建一个代码库。大家可