大家好,今天我们来学习一下基于Spinnaker的持续交付实践。相信大家应该都听说过Spinnaker,但是想真正部署起来肯定很难,更不用说使用了。我们今天的课程就是为大家解决这些问题,让大家真正使用起来,进而体验Spinnaker的高级特性。来看看我们今天基础篇的内容吧。我把它分成了4个部分:第一个部分,我们来谈谈什么是Spinnaker。让我们熟悉一下它的功能。这就是今天说的Spinnaker的介绍。那么在第二部分中,我们将向您介绍Spinnaker的服务及其架构,第三部分,因为听说Spinnaker的安装配置很不爽。很多同学想学的时候可能会卡在安装上,更别说使用了是吧?那么今天我们就来教第三部分Howdoyouinstallit,全方位的分析每一步的操作方法和实现方法。最后再说一下Spinnaker版本的更新。OK是内容,入门就够了。我们先来看第一章,Spinnaker简介。第一章是让大家了解什么是Spinnaker,为什么要学习Spinnaker?让我们简单介绍一下。Spinnaker是一个开源的多云持续交付平台。我们现在使用的持续交付平台其实很少。我们可能会使用Jenkins来完成它。Jenkins也可以支持我们做CI/CD,但是你会发现如果Jenkins要做CD,你需要写代码,写一些插件来实现。.相对来说,我们每个人的能力要求都比较高,要不断调试这个程序写的兼容性问题。因此,对于目前的开源CD平台来说,Spinnaker肯定是最强大的。我们推荐给大家。如果我们要做持续交付,可以使用Spinnaker来完成。常见的架构是Jenkins+Spinnaker,Jenkins是帮我们做CI,然后Spinnaker是帮我们做CD。那么什么是持续交付?事实上,今天开发人员编写的代码被推送到代码库中。然后我们就可以快速、自动、稳定的把这个变化发布到各个环境中。这就是持续交付。Spinnaker的核心是两个函数。这也是我们在学习的时候应该注意的。有两个方向。第一个方向是应用管理,第二个方向是应用部署。应用管理,这部分内容比较简单,相当于一个网页。我们如何学习如何使用它?如何订购?那么第二部分的应用部署就是Spinnaker的核心,也就是Pipeline管道。我列出了目前Spinnaker支持的一些云提供商,比如AWS、Google、Kubernetes、oracle,现在,国内的一些云提供商,我们重点使用他们来完成Kubernetes的持续交付。Spinnaker有哪些强大的功能,下面就来简单了解一下这些功能。第一个功能是CI工具的集成,CI工具的集成。Spinnaker支持两部分。第一部分是监听事件。可以监控镜像仓库。例如,当镜像仓库中的某个镜像发生变化(更新)或创建新标签时,会触发Spinnaker。那么还有一种情况,就是在Spinnakerpipeline中也可以触发Jenkins等CI工具的pipeline。当然反过来也是可以的,Jenkins也可以触发Spinnakerpipeline。Point2有一个非常强大的配置管理工具。熟悉Jenkins的同学应该都知道,Jenkins有一个cli工具,可以在没有图形界面的情况下进行操作,然后通过cli工具直接在命令行中执行。Spinnaker也有这样的工具。也是一样的功能。Halyard实现了Spinnaker整个生命周期的管理、安装和配置更新。第三点是监控的集成,可以集成prometheus或者datadog。集成后可以作为金丝雀分析的指标,通过prometheus/datadog中的监控指标进行部署分析。第四点是部署策略。Spinnaker支持多种部署策略。我们也可以自己定制部署策略。比如:蓝绿部署和金丝雀部署都支持,我可以通过内置强大的部署策略实现持续交付。第五点是基于角色的访问控制,就是用户认证和用户权限。LDAP等。Point6事件通知、邮件通知等。最后,它的功能也很强大,发布窗口支持。比如只能在固定时间发布,错过了高峰期。应用管理和应用部署,先说应用管理和应用管理。Spinnaker已经制作了应用程序的模型。你可以看到这张图片。我们可以这样理解。Spinnaker中的一个应用程序对应于我们的现实。服务器中的每个微服务;ServerGroup是微服务部署的环境,比如开发环境、生产环境、预生产环境;集群是应用程序所有实例的集合。刚才我们说了,每个ServerGroup就是每个Environment,Cluster就是ServerGroup的集合。可以理解为一个Cluster包含了当前服务的所有环境。负载均衡器LB对应Kubernetes中的Service;防火墙是云提供商的安全组条目。我们打开Spinnaker的页面,可以看到它的分类。对理解应用模型更有帮助。对于应用程序部署,Spinnaker的核心是管道。一个流水线(pipeline)包含多个阶段。这些阶段可以并行运行。例如,如果将两个阶段设置为相同的依赖阶段,则其他阶段将在该阶段完成后并行运行。.我们都可以自己灵活定义阶段。根据每个项目的特点,我们可以创建一个流水线模板,后面会通过这个模板文件批量创建,最后我们可以更改参数。这是后期的一种管理方法。在管道配置部分,也支持一些触发器,GitJenkinsDockerRegistryNexusArtifactory等等。
