Spinnaker第一节-What、Why、How

前言

我们公司一直在寻找一种自动化持续交付方案,自己也走过弯路造过一些玩具轮子,直到有一天我的老板发给我们一个spinnaker的链接,才让我认识了这个国外开源产品,打开了一扇窗,看到了更精彩的世界。

不知不觉已经参与spinnaker的研究和实践快一年了,早就有想法在博客中做一个spinnaker的专题来将这个强大的工具与大家分享下,无奈spinnaker有上百万的代码量,涉及到的知识点又比较专业,我花费了很多时间精力才把这些坑补的差不多,今天终于鼓起勇气,开始为国内的运维朋友介绍这个Netflix和Google合作开发的持续交付平台。

What is spinnaker

Spinnaker官网给自己定义的是多云持续交付平台,重点有3个单词:多云、持续和交付。

多云:

支持国外流行的云平台,包括AWS、google云、微软云、容器云,3.0之前还支持openstack,2019年4月份github的master版本把openstack删除掉了,看来重点是要支持公有云。

持续:

产品的发布并不是人工操作或者随机性、一次性的操作,而是由工作流为载体的,Netflix基于spinnaker一天要部署上万个版本,可见一旦找对方法,spinnaker就能稳定、自动、持续的运转下去。

交付:

spinnaker平台的最终目的是交付,是如何让新版本上线,所以所有的spinnaker设计都是围绕交付这一主题展开的。

其实读过spinnaker的代码之后,你会发现,spinnaker本质上是由十来个独立的微服务组合而成的,每个节点的代码都可以单独拿来解决一个方向的问题,微服务节点之间并没有使用Spring Cloud这种统一的微服务架构,甚至连开发语言都没有统一,应该是Google和Netflix的开发团队基于现成的一些内部组建拼凑起来的。

Why is spinnaker

为什么要使用spinnaker?或者说什么场景下要使用spinnaker?

如果你的硬件资源是几台物理机,每次发版是手动或者命令方式去操作固定的IP,那么spinnaker不适用于你,spinnaker只能对接云平台。

Spinnaker的优势之一是多云

通过统一的概念和操作界面,让运维人员弱化了云平台之间的差异性,他们只需要知道Cluster、ServerGroup、LoadBalance、Firewall这几个概念就足够用好spinnaker了,不需要明白每家云平台实现这几个概念的细节,而且可以在单个页面看到不同云平台所有实例的状态!

Spinnaker的多云对于企业也有战略意义,商务上不想被某家云厂商绑定,架构上可以做混合云高可用性。

Spinnaker的优势之二是使用方便

spinnaker已经对接了主流的运维工具(Jenkins、Git、Prometheus等),通过简单配置就可以与它们集成起来,而且提供多种SSO的认证和授权方式,不需要独立的鉴权中心。所以spinnaker是个侵入性很低、很友好的平台。

Spinnaker的优势之三是自定义Pipeline

spinnaker内置了20多中stage,每种stage已经封装好了一套业务逻辑,例如Deploy、Destroy、Bake、Webhook、Wait、ScaleDown等,你可以根据自己的应用场景来编排你的交付流程。

Spinnaker的优势之四是金丝雀测试

可以基于线上版本与新版本进行CPU、内存、网络、IO、Http报文等多层面的比对,并可以自己设置权重,最终对金丝雀分析结果进行综合评定,为新版本应用是否上线提供“不含业务纯理性”的评测依据。

Spinnaker的优势之五是扩展性强

spinnaker代码的扩展性非常好,方便有研发实力的公司进行二次开发。以spinnaker最核心的CloudDriver这个节点的代码来举例说明,从图中可以看到spinnaker已经将最核心的部分在core中进行了声明和实现,像web、security这种公用的部分也做了实现,如果要对接新云平台只需要按照其接口要求新写一个子项目就好了。

How to use spinnaker

Spinnaker只负责交付,不负责构建,换句话说只负责CD,不负责CI,spinnaker的输入是软件包,所以我们要利用git、jenkins等其它组建先搞定CI的事情将交付物做为输入来对接spinnaker。当然spinnaker已经很好的集成了git、jenkins的接口,通过配置就可以很好的接收CI的结果。

Spinnaker是对接云平台的,而且是“流量云”,这里之所以强调是“流量云”是为了区分开国内的包年包月的云平台用法,因为那种使用方式本质上还是物理机,并不是真正意义上的云。Spinnaker中对产品的发布是immutable的方式,也就是只有创建和销毁的动作,不会进入机器进行任何操作。软件版本的迭代,就是创建一个新的伸缩组绑定新的镜像,替换掉LoadBalance中老的伸缩组即可。

结束语

本片先对spinnaker做一个简单的介绍,让大家知道这个产品是什么、为什么用、怎么用,后面我打算将这个系列一直做下去,会深入到实践和源码层。

发布了168 篇原创文章 · 获赞 184 · 访问量 41万+

猜你喜欢

转载自blog.csdn.net/yejingtao703/article/details/89714878