18

Spinnaker实践教程-Spinnaker基础简介

 3 years ago
source link: http://developer.51cto.com/art/202010/628876.htm
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

FRZZbqM.jpg!mobile

大家好,今天,我们将一起来学习基于Spinnaker的持续交付实践,相信各位同学之前应该都听过Spinnaker吧,但是你实际上去部署的时候 肯定是很困难的,更甭说上去用了。今天我们这次课程,就是为大家去解决这些问题,让大家真正的去用起来,然后体验一下Spinnaker的高级的特性

ueq2uiR.jpg!mobile

那我们来看一下今天我们基础篇的内容,我把分成了4个部分:第1个部分,就是我们来讲一下什么是Spinnaker,大家来熟悉一下它的特性,这是今天所说的Spinnaker的简介,然后第2个部分,我们会为大家讲Spinnaker的服务和它的架构,第3个部分,因为都听说Spinnaker安装配置起来特别难受,可能很多同学想要学的时候都被安装卡住了,更甭说上去用了对不对?所以今天我们第三部分就是要教大家怎么去安装,全方位的给大家分析每一个步骤怎么去做,怎么去实现,最后我会为大家说一下Spinnaker的版本的更新。OK就是这些内容,入门是足够了。

rErymqq.jpg!mobile

我们先来看第一章,关于Spinnaker的简介,第1章,就是让大家知道Spinnaker是什么,我们为什么要学习Spinnaker?

emuYzia.png!mobile

我们来简单介绍一下,Spinnaker它是一个开源的,多云的持续交付平台。我们现在用的持续交付平台其实很少,我们可能用Jenkins来完成,Jenkins也能支持我们做CI/CD,但是你会发现,Jenkins要做CD的话,得需要去写代码,写一些插件来实现。相对来说我们每个人能力要求就比较高了,而且还得不断的去调试这个程序所写的兼容性问题,所以说目前来说,开源的CD平台的话,Spinnaker肯定是功能最强大的,我们推荐大家。如果要是做持续交付的话,我们就可以使用Spinnaker完成。常见的架构就是Jenkins + Spinnaker,Jenkins是去帮我们去做CI,然后Spinnaker去帮我们做CD 。

那什么是持续交付?其实就是开发人员今天写的代码推到代码库了,那我们能够快速的,自动化的,稳定的将这个变更发布到各个环境这就是持续交付,Spinnaker核心就两个功能,也是我们在学习的时候要注意,就两个方向,第1个方向是应用的管理,第2个方向是应用程序部署。应用管理,这一部分的内容,相对来说简单一些就相当于是一个web页面,我们学习怎么去用?怎么去点?然后第2部分的应用程序部署是Spinnaker的核心,就是Pipeline流水线。

我列举了一些当前Spinnaker所支持的一些云供应商,AWS、Google、Kubernetes,oracle,现在,国内的一些云供应商,我们重点使用其完成Kubernetes的持续交付。

Spinnaker有哪些强大的功能,先简单了解这些功能。

zA32Ujb.jpg!mobile

第1个功能是关于CI工具的集成,CI工具的集成。Spinnaker它支持两个部分,第1个部分是监听事件,它可以监听镜像仓库,比如说当镜像仓库里面的某个镜像,发生了变化(更新)或者创建了一个新的标签,它去触发Spinnaker的流水线去运行;那么还有一种情况,就是在Spinnaker流水线里面也可以去触发Jenkins等CI工具的管道,当然反过来也是可以的,Jenkins也能去触发Spinnaker管道。

第2点具有一个非常强大的配置管理工具,熟悉Jenkins的同学应该知道Jenkins有一个cli工具,可以不在图形界面去操作,然后通过cli工具直接命令行里面去执行,Spinnaker也是有这样的一个工具,也是同样的功能。Halyard是实现Spinnaker整个生命周期的管理、安装配置更新。

第3点是监控的集成,它可以集成prometheus,或者datadog。集成之后可以作为金丝雀的分析的指标,通过prometheus/datadog里边的监控指标,去分析这次的部署。

第4点就是部署策略,Spinnaker里面支持,很多种部署策略,我们自己也可以去自定义部署策略。例如:蓝绿部署、金丝雀部署这些都是支持的,我可以通过内置强大的部署策略来实现持续交付。

第5点基于角色的访问控制,这个就是用户认证、用户权限这块。LDAP等等。第6点事件通知,邮件通知等等。最后它的特点也是非常强大功能,发布窗口支持。例如在固定的时间才能发布,错过高峰期。

Fb2qEjm.jpg!mobile

应用管理和应用部署,我们先来说应用管理,应用管理,Spinnaker它对应用程序做了一个建模,大家可以看这张图,我们可以这么去理解,Spinnaker里面一个应用程序对应的就是我们现实中每一个微服务;ServerGroup是微服务它所部署的各个环境,比如说开发环境,生产环境,预生产环境;Cluster是应用的所有实例的集合,刚才我们所说了,每一个ServerGroup就是每一个环境,Cluster就是ServerGroup的集合。可以这样理解,一个Cluster里面包含的就是当前这个服务的所有环境。负载均衡器LB对应Kubernetes中的Service;防火墙对于云供应商来说就是安全组入口。

Fz6nqqV.jpg!mobile

我们打开Spinnaker的页面,大家可以看到它的分类。更有助于理解应用模型。

ZzUvmqr.jpg!mobile
aIZRbaU.jpg!mobile

应用部署,Spinnaker它的核心就是pipeline,一条流水线(pipeline)包含多个阶段(stage),阶段可以并行运行,例如将两个阶段设置为相同的依赖阶段,则该阶段运行完成后 并行运行其他阶段。阶段我们都可以自己去灵活的去定义。

miyeIzf.jpg!mobile

可以根据每个项目的特点,去创建一个流水线的模板,后期通过这个模板文件批量创建,最后我们改参数就可以了。这是后期的一种管理的方式。在流水线配置的部分,也支持一些触发器,Git Jenkins DockerRegistry Nexus Artifactory等等。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK