目录

1 产品简介

2 架构设计

2.1 生命周期

2.2 功能架构

2.3 发布流程 

2.4 微服务技术架构 

3 Spinnaker的优势 

3.1 支持多云 

3.2 多种发布策略 

3.2.1 无策略 

3.2.2 Highlander

3.2.3 Red/Black: 

3.3 金丝雀分析 

3.4灵活控制 

3.5无缝集成现有工具 

5 操作文档 

5.1 Application

5.2 基础资源管理 

5.2.1 LoadBalance

5.2.2 Firewalls

5.2.3 Cluster

5.3 Pipeline

5.3.1 测试发布Pipeline: 

5.3.2 生产发布Pipeline


1 产品简介

Spinnaker解决了如何将软件频繁、快速、可靠、灵活地交付到云上,为团队提供能够跨多个云账户和区域、甚至跨多个云平台的自动化部署方案,可以以产品为维度设计并自动化一个符合自己发布节奏的交付过程。 

2 架构设计

2.1 生命周期

Spinnaker涵盖了产品从软件包构造完毕到最终上线之间的全部过程。 

2.2 功能架构

Spinnaker的核心价值是多云和持续部署。 

2.3 发布流程 

2.4 微服务技术架构 

 

 

Spinnaker采用微服务设计,对功能可以灵活扩展。 

3 Spinnaker的优势 

3.1 支持多云 

Spinnaker通过Application、Cluster、ServerGroup、LoadBalance、Firewall五个概念来统一对接所有云平台,完美解决与云平台松耦合的问题,大大降低了云平台的学习成本和操作成本。 

目前版本支持5种云:

 

3.2 多种发布策略 

3.2.1 无策略 

只是按配置创建一个新伸缩组,并不关心老伸缩组的状态。 

3.2.2 Highlander

创建一个新伸缩组,然后销毁掉该cluster内的其它伸缩组,一般用于发布测试环境和灰度环境。 

3.2.3 Red/Black: 

创建一个新伸缩组,然后disable该cluster内的其它伸缩组,并不做销毁操作,观察期内可发起Rollback,一般用于生产全量发布。 

3.3 金丝雀分析 

Spinnaker为我们提供了一套脱离业务适用于所有场景的测试机制 

原理图:

分析报告: 

 

3.4灵活控制 

Spinnaker通过条件执行、人工判断、强制等待、嵌套Pipeline等方式灵活控制工作流的执行 

3.5无缝集成现有工具 

Spinnaker不仅原生支持对接Git、Jenkins等工具,还可以通过RunJob、Script、Webhook等环节将您的自定义系统链接在一起 

5 操作文档 

5.1 Application

定义:Spinnaker以Application为维度进行云资源和交付Pipeline的管理,将所有管控信息收敛到一起符合“谁构建,谁运维”的宗旨。 

创建:

红框为必选信息,填入application名称和owner的邮箱。 

黄框是选填信息,可以限定application对接的云平台,默认对接所有平台。 

蓝框是选填信息,对application进行权限控制,默认所有用户都可以访问。 

5.2 基础资源管理 

Cluster、LB、Firewall分别对应着云平台的服务能力、流量控制和安全控制,统一的管理概念解耦云平台的差异性,降低学习成本。 

Spinnaker在弹性伸缩上层又封装出来的一个Cluster概念,提供不同版本相同服务能力的弹性伸缩组的集合属于同一个Cluster。 

Spinnaker种基础资源管理页面布局:

5.2.1 LoadBalance

创建伸缩组操作如下: 

LB的其它操作: 

在拓扑区点击某一个LB,右边页面会展现出该LB的详细信息,如果勾选了“Instances”选项,拓扑中会加载出LB下挂载的实例信息。右侧按钮可以对LB进行编辑和删除。 

 

5.2.2 Firewalls

安全组页面为我们提供了安全组、伸缩组、负载均衡之间的关联关系,点击某一资源后右侧可以显示详细信息。 

 

5.2.3 Cluster

Cluster的创建方式同LoadBalance一样,如图:

 具有相同${Application}-${Stack}-${Detail}的ServerGroup的ServerGroup属于同一个Cluster,选中某一个ServerGroup后可以对其进行回滚、复制、修改容量、停用/启用、销毁等操作。 

 

5.3 Pipeline

页面布局: 

 

5.3.1 测试发布Pipeline: 

流程图: 

Configuration: 

配置Pipeline的触发器和动态参数。

 

Bake: 

制作新版本的交付镜像。 

Deploy: 

发布新版本镜像到测试环境弹性伸缩组,请注意这里采用的highlander发布方式。 

Wait: 

等待测试验证,到期或者人工跳过后触发后续环节。 

Manual Judgment: 

人工判断环节,这里用于判断新版本测试是否通过。

IntegrationTest: 

集成测试,本质是一个webhook环节,用于集成现有的测试系统。 

Tag Image: 

为测试通过的镜像打tag,目前只有AWS云平台支持该功能。 

Destroy: 

测试完毕后销毁资源,节约成本。 


5.3.2 生产发布Pipeline

流程图: 

 

生产发布Pipeline按照生命周期分为5个部分。 

1 部署金丝雀环境 

基于生产版本和待上线版本各部署一组弹性伸缩组并接入生产环境的流量。 

2 金丝雀分析

 

3 销毁金丝雀环境,节约成本 

4 全量发布

请注意这里采用的是红黑发布策略,便于快速回滚,Capacity选择继承当前环境的容量,保证服务能力。 

5 全量观察结束后,销毁老资源,节约成本

 

 

 

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐