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


我是本次课的讲师,泽阳,我先来做一个简单的自我介绍,我目前从事的运维相关的工作,参与过一些DevOps相关的项目实施和改造,踩过了无数的坑,也积攒了一些经验,基本上我都会给大家分享出来,我现在所代表的课程,有Jenkins实践和GitLabCI实践,那么今天我们学的这个Spinnaker实践,是我最新的也是唯一的CD实践课程,所以希望在CD方面对大家有所帮助。


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


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

我们来简单介绍一下,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有哪些强大的功能,先简单了解这些功能。


第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点事件通知,邮件通知等等。最后它的特点也是非常强大功能,发布窗口支持。例如在固定的时间才能发布,错过高峰期。


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


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


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


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

关于我们

泽阳,DevOps领域实践者。专注于企业级DevOps运维开发技术实践分享,主要以新Linux运维技术、DevOps技术课程为主。丰富的一线实战经验,课程追求实用性获得多数学员认可。课程内容均来源于企业应用,在这里既学习技术又能获取热门技能,欢迎您的到来!(微信ID: devopsvip)

DevOps流水线实践课程

????戳阅读原文,进入课堂

Spinnaker实践-Spinnaker基础简介相关推荐

  1. 网络分析概述之网络基础简介

    网络分析概述之网络基础简介 本文转载自小白名的生统笔记,原文链接:https://mp.weixin.qq.com/s/Bp-u663WUhFxPfeP7pBh0w 从本节开始介绍网络分析.本篇暂且对 ...

  2. 第一章 Redis基础(简介+下载和安装+基本操作)----黑马

    第一章 Redis基础(简介+下载和安装+基本操作) ----黑马 文章目录 第一章 Redis基础(简介+下载和安装+基本操作) ----黑马 学习目标: 1. Redis 简介 1.1 NoSQL ...

  3. Spinnaker终极形态-Spinnaker On Spinnaker

    实践是推广一个产品或技术的最好的方式,特别在IT行业让产品管理产品本事,就是一种很好的推广方式,例如Docker in Docker.k8s in k8s,这些已经被大家普遍接受.所以我觉得spinn ...

  4. Jsp入门1Jsp入门基础简介与工作原理详解

    一)JSP基础简介 1.什么是JSP? JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术. JSP这门技术的最大的特点在于 ...

  5. Linux下Web服务器应用之基础简介

    Linux下Web服务器应用之基础简介 一.web服务器基本知识: WWW 是 World Wide Web 的缩写 URL:<协定>://<主机地址或主机名>[:port]/ ...

  6. JavaScript学习笔记01【基础——简介、基础语法、运算符、特殊语法、流程控制语句】

    w3school 在线教程:https://www.w3school.com.cn JavaScript学习笔记01[基础--简介.基础语法.运算符.特殊语法.流程控制语句][day01] JavaS ...

  7. python编程入门到实践笔记习题_Python编程从入门到实践笔记——列表简介

    python编程从入门到实践笔记--列表简介 #coding=utf-8 #列表--我的理解等于c语言和java中的数组 bicycles = ["trek","cann ...

  8. jQuery基础简介

    jQuery基础简介 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 开发工具与关键技术:Visual Studio 2015 jQuery ...

  9. Docker入门到实践 (一) docker简介与安装、常用命令讲解

    Docker入门到实践 (一) docker简介与安装 一.docker 介绍   Docker 是一个开源的应用容器引擎 打包应用以及依赖包到一个可移植的镜像中,发布到任何机器上,实现虚拟化.容器是 ...

最新文章

  1. 【转】Hadoop分布式集群搭建hadoop2.6+Ubuntu16.04
  2. sql join on 多表连接_SQL 多表查询-交叉连接(笛卡尔积)
  3. 移动端重构系列5——等分,居中等
  4. 分布式单点登录框架XXL-SSO
  5. LeetCode-二分查找-35. 搜索插入位置
  6. 2路由策略_route-map(执行路由策略)
  7. ServletActionContext.getRequest().getSession() 和 ActionContext.getContext().getSession()的区别
  8. POJ 3461Oulipo KMP模板
  9. 【LeetCode】【HOT】240. 搜索二维矩阵 II(抽象二叉搜索树)
  10. 精通 Pandas · 翻译完成
  11. 作为外包,你有过不甘吗?| 畅言
  12. 数据结构 Tricks(一)—— 父节点和左右孩子索引号之间的关系
  13. Go 语言论坛系统 bbs-go
  14. 对比Vector、ArrayList、LinkedList有何区别(转)
  15. java中对于框架的理解_接触Java项目一周后对一些基本框架的理解 | 学步园
  16. Linux RTC驱动模型分析
  17. Sort Integers by the Number of 1 Bits
  18. carmaker/matlab联合仿真(二) 新建测试场景
  19. AT指令集及常用指令
  20. 发送网页内容到onenote_如何直接在网页上做笔记并保存到 Onenote?

热门文章

  1. K8s 超详细总结!
  2. Kafka实战:如何把Kafka消息时延秒降10倍
  3. 转:浏览器加载页面的过程与页面性能优化
  4. IOS移动APP网络层设计方案
  5. mit app中计算器制作程序_Step7中配合WinCC制作比例阀控制程序示例
  6. 不能打印机与计算机,为什么打印机不能打印(打印机为什么不能打印?)
  7. 做网站,赚钱未动,兴趣先行
  8. C++为什么父类析构函数要定义为虚析构函数
  9. python:mplfinance 画股票图表
  10. Docker (容器) 的原理详解(--超详细--)