Spinnaker之准备篇
Spinnaker相关概念
Preface
一直使用IBM的uRelease和uDeploy来作为公司项目的CD工具,但由于公司对这个的管控以及私有化定制造成一系列的不变,至少在我们的项目中每次releas都让人觉得比较troublesome。然后运维Team引入CD2.0的东东,逐步替代原先的发布方式,仔细一看原来是Spinnaker。
Application management
可以使用Spinnaker
的Application management
这个特性去查看和管理你云端的资源。
Applications, clusters, server groups是Spinnaker
用于描述你服务的核心概念。
Load Balancers和Firewalls用于描述如何将你的服务暴露给用户。
Application
Application
就是一个由多个Cluster
组成的集合。而每个Cluster
又是由多个Server Group
组成的集合。 Application
通常还包括多个Load Balancer
和多个Firewall
。
Application
代表了你将要使用Spinnaker
去部署的服务,以及该服务的所有配置和将在其上运行的所有基础结构。
Cluster
首先需要知道,这里的Cluster与Kubernetes
中的Cluster是无关的,不是一个概念,它在Spinnaker
中只不过是Server Groups
的一个集合。
在Spinnaker
中,你可以自己定义Cluster
,它是Server Groups
的逻辑分组。
Server Group
其实每一个Server Group
就是一个比较基础的资源。它标识了可部署的artifact
(如:VM image、Docker image、 source location) 和基础的配置设置(如实例数,自动扩展策略,元数据等)。
同时,这个资源可以选择与负载均衡器(load balancer)和防火墙(firewall)关联。 当被部署,一个Server Group
是一个运行软件实例的集合(VM instances,Kubernetes pods)。
Load Balancer
负载均衡器与入口协议和端口范围相关联。它平衡Server Group
中多个实例的流量。
(可选)您可以启用负载均衡器的运行状况检查,并可以灵活地定义运行状况标准并指定运行状况检查端点。
Firewall
定义网络流量的访问策略。
它实际上是一组由相关通信协议和一定范围的IP端口定义的防火墙规则。
Application deployment
可以使用Spinnaker
的Application deployment
功能来构建和管理持续交付的工作流。
Pipeline:
这个pipeline
在Spinnaker
中是一个核心的部署管理结构。 它是由一系列行为组成,被称为stage
。 其中可以沿pipeline
在各个stage
之间传递参数。
可以手动启动一个pipeline
,也可以配置pipeline
通过事件自动触发,如通过一个Jenkins
job来完成,或者一个新的docker image
出现在注册表里,亦或一个linux的cron job, 或者在另一个pipeline
的某个stage中触发。
在pipeline
执行过程中,可以配置它在相关去发通知,通过email,Slack或者SMS去发给相关人或组织。(比如start, complete, fail)
Stage
在Spinnaker
中,Stage
是pipeline
中的基本组成部分,描述了pipeline
将执行的动作。
Deployment strategies
- 红色/黑色(又称蓝色/绿色)策略,
- 滚动的红色/黑色
- 金丝雀策略
了解这个有啥卵用呢?其实不慌!了解了Spinnaker
的基本概念后,接下来在后续章节再看这些东西怎么用的吧。