Spinnaker 核心概念
本文大部分内容翻译自官方文档。文章结尾处给出链接。 Spinnaker 是 Netflix 开源出来的持续交付工具,目的是为研发团队提供灵活的持续交付流水线,并且支持部署到多个环境。Spinnaker 的本身也是微服务架构,所以Spinnaker本身也可以轻松的实现扩容和滚动升级。
原文:Spinnaker is an open-source, multi-cloud continuous delivery platform that helps you release software changes with high velocity and confidence.
spinnaker 是一款开源的支持多种云平台的持续部署平台,它可以帮助你快速、从容的发布软件的变更。
spinnaker 提供了两组核心的功能。
- application management(应用管理)
- application deployment(应用部署)
application management(应用管理)
你可以使用spinnaker去查看和管理你的云资源。一般在企业中一个应用其实类似一个“包裹”,里面包含了多个应用程序或者微服务。一个spinnaker的应用就是这样一个“包裹”的概念。Applications, clusters, 和 server groups是spinnaker中用来管理你所提供服务比较重要的概念。Load balancers and firewalls 则是用来管理怎么将你的服务提供给用户。
Application
Spinnaker中的Application(应用程序)是Cluster(集群)的集合,集群又是Server Group的集合。Application还包含了firewalls(防火墙)和load balancers(负载均衡)。
Cluster
cluster在spinnaker中并不是k8s的集群的一个概念,而是一个server group的逻辑的集合。
Server Group
服务组,是资源管理单位,识别可部署组件和基础配置设置,它并且关联了一个负载均衡器和安全组,当部署完毕后,服务组就相当于一组运行中的软件实例集合,如(VM 实例,Kubernetes pods)
Load Balancer
负载均衡,用于将外部网络流量重定向到服务组中的机器实例。同时还可以指定一系列规则,用来做健康监测,灵活的进行定义健康的标准以及检查的端点。
Firewall
Firewall定义了网络访问的规则。实际上是定义椅子ip范围以及通信协议和端口范围的防火墙规则。
Application deployment(应用部署)
Pipeline
在spinnaker中部署管理的核心就是pipeline。它包含一系列的核心动作,比如后面要说的stage。在管道中你可以从一个stage传递参数到另一个stage。你可以手动或者自动触发一个pipeline。自动触发的事件包含很多,比如一个Jenkins的任务完成后推送docker镜像到私有仓库、cron的计划任务等。
你还可以配置在pipeline中的某个阶段(pipeline的开始、结束、异常等)进行提醒,有很多的提醒方式:邮件、短信等。
Stage
stage表示的是pipeline中的一个构建功能模块。spinnaker提供了很多内置的stage,比如deploy、resize、disable、手动动作等。
Deployment strategies
spinnaker非常擅长处理云原生应用部署。基本的策略是基于健康监测进行停止原来的server group 并且启用新的server group。spinnaker支持红/黑(蓝绿)策略、滚动红/黑策略、canary 发布。