Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Spinnaker 介绍 – Netflix 的持续交付平台

Spinnaker 介绍 – Netflix 的持续交付平台

作者头像
Debian中国
发布于 2020-01-21 03:57:57
发布于 2020-01-21 03:57:57
4.1K0
举报
文章被收录于专栏:Debian中国Debian中国

Spinnaker 是 Netflix 在2015年开源的一款持续交付平台,它继承了 Netflix 上一代集群和部署管理工具 Asgard:Web-based Cloud Management and Deployment的优点,同时根据公司业务以及技术的的发展抛弃了一些过时的设计:提高了持续交付系统的可复用性,提供了稳定可靠的API,提供了对基础设施和程序全局性的视图,配置、管理、运维都更简单,而且还完全兼容 Asgard,总之对于 Netflix 来说 Spinnaker 是更牛逼的持续交付平台。

在深入了解 Spinnaker 之前,先扯一扯 Netflix 的技术文化:这是一家全面拥抱云的公司,据报道数据中心完全部署在 AWS 上,是 AWS 的超级大客户。在上云后他们发现故障仍然避免不了,为了更加从容的应对这些故障,就搞了一个工具 Chaos Monkey 会随机停止生产环境中的虚拟机,通过观察系统在真实故障中的表现来确保程序的健壮性,也通过实战来验证各种高可用技术是否靠谱。接着冒出了 Chaos Gorilla,会停止一整个可用域中的所有机器;最后还有Chaos Kong,直接停掉一整个 Region,非常有挑战精神(丧心病狂)。

为了更好的观察系统在故障时的情况,还研发了全局可视化系统,代号 Flux,可以将整个系统的逻辑架构和各服务之间的流量可视化在大屏幕上,效果图如下:

他们每个月有一个活动:将一个 Region 里的机器全部关掉,看 Netflix 服务是否正常。有兴趣看视频的可以移步这里

另外,Netflix 除了云服务,还有自建CDN,即 Open Connect 项目,这个项目的边缘设备是地地道道的物理设备,并且从硬件到软件全部是自己定制的。关于 Open Connect 的详细介绍,以及使用的技术栈可以看 Netflix 的分享,还有他们如何做 CDN 监控的

主要功能

回到 Spinnaker,他主要管理 Netflix 的云服务,并不管理 OpenConnect 相关的设备和服务。Spinnaker 是基于云的 CD 平台,提供快速、可靠、稳定的软件变更服务。主要包含两类功能:集群管理(Cluster management)和部署管理(deployment management)。

1. 集群管理

集群管理主要用于管理云资源,Spinnaker 所说的“云”可以理解成 AWS,即主要是 IaaS 的资源,比如 OpenStack,Google云,微软云等,后来还支持了容器,但是管理方式还是按照管理基础设施的模式来设计的。

Spinnaker 中管理如下资源:

Server Group:最基本的逻辑资源,包括了若干使用相同配置和镜像的虚拟机,若干负载均衡(load balancer),以及安全组。 安全组规则(Security Group):就是 AWS 中的安全组,可以理解成防火墙负载均衡(Load Balancer):AWS 中的 ELB,也可能是安装在虚拟机中的负载均衡。

2. 部署管理

管理部署流程是 Spinnaker 的核心功能,他负责将软件包(可能是手工创建的或者 jenkins 创建的)打成一个镜像,用这个镜像生成对应的虚拟机,让服务真正运行起来:

pipeline

在 Spinnaker 中一个部署流程叫做pipeline,由若干个操作组成,每个操作又叫做一个 stage。触发一个 pipeline 方式非常灵活,可以手动触发,也可以用 jenkins、CRON 等。同时,可以配置 pipeline 向外发送一些通知信息,比如“开始”,“结束”,“失败”等。

stage

pipeline 中的一个操作,stage 之间可以有先后顺序,也可以并行。Spinnaker 中预定义了一些 stage 的类型,这些类型的 stage 往往使用频率比较高:

  • Bake:在某个 region 中制作虚拟机的镜像。Netflix 推崇不可变基础设施的理念,所以他们将软件打包进镜像的方式来部署服务。创建镜像的核心基于 Packer(Hashicorp 开源的镜像烘焙工具,Vagrant 就出自该公司 CEO 之手)。如果部署时用 docker,则打包过程就交由 docker build 完成。
  • Deploy:用 Bake 中创建的镜像部署成一台虚拟机。
  • Jenkins: 执行一个 Jenkins 的 job。
  • Manual Judgment : 暂停,等待用户的许可后再继续。
  • Pipeline : 执行另外一个 pipeline。
  • Script :执行任意的脚本。
  • Wait : 等待一段时间。

从 pipeline 的定义看,Spinnaker 和 Jenkins 有几分相似,不过两者的设计出发点的不同,stackoverflow上有相关的讨论。总结来看,jenkins 偏向 CI,产出物是软件包;Spinnaker 是 CD,将软件包分发到服务器/虚拟机上,保持软件正常运行,它的目标只是让“部署”的过程更容易更可扩展。有一个例子可以说明两者的关系:Netflix 内部有人不用 Spinnaker 的 pipeline,而只是将 Spinnaker 看为一个部署工具,直接在 jenkins 中调用它的 API 来部署服务。

逻辑架构

Spinnaker 自己是一个微服务架构,由若干组件组成,所有组件都开源在github上,整个逻辑架构如下图所示:

Deck:AngularJS 写的 WebUI。 Gate:提供 API 接口给外部程序,Deck 也是其中之一,Spinnaker 的大门。 Cloud Driver:对接各种云服务提供商,比如AWS, GCP, Azure 等。她负责所有对这些云服务的读写操作。 Orca :处理 pipeline 和任务编排,比如创建一个虚拟机,等待它创建完成,然后执行其他操作。 Rosco 基于 Packer 的镜像创建服务,她将一个 Debian 或者 RedHat 的包封装到虚拟机镜像中,这个过程有点像烘焙,所以也叫 image bake。 Front50 存储所有pipeline,应用,通知的原信息。 Igor 对接 Jenkins 的服务,比如 pipeline 中需要调用 jenkins,那么就依赖这个服务。 Echo 提供通知服务,对接各种各样的服务商:Slack, Hipchat, SMS (via Twilio) , Email。 Rush 脚本执行引擎。

管理方法

Spinnaker 看起来也是一个复杂的微服务架构,由不少服务组成,所以本身也遵循一些运维准则:

  1. 每个 Spinnaker 的服务(如 deck,gate,orca)都运行在独立的 cluster 中。
  2. 每个服务都将自己的运行指标推送到 Atlas 中,用于绘制仪表盘和报警。Atlas 是Netflix的一个内存时间序列数据库
  3. 每个服务都将自己的日志发送到 ELK 集群中。
  4. 每个内部服务除了deck 和 gate 必须用 mutual TLS,并且证书和认证通过 Lemur 进行管理。不允许任何外部流量进入内部服务中。所有的 API 调用必须经过 gate。
  5. 每个外部服务(除了gate)都要支持 mTLS 或者 SSO。
  6. 如果某个服务有数据存储的需求,那么只能存在自己的数据库中,服务之间不共享数据存储。

为了保证兼容性,Spinnaker 在开发过程中还会准守一些准则:

  1. 保证足够的单元测试和覆盖率。
  2. 在 code review 的时候特别注意是否会破坏API兼容性。
  3. 7×24 不间断的执行集成测试。有两种集成测试,一种是一个 jenkins job,会不断调用 API 接口,确保API是按照预想的在工作,另一种是一个 Spinnaker 的 pipeline,用来执行日常任务(比如创建镜像,部署环境等)。
  4. 当发现未知的失败是,首先执行回滚操作,直到这个问题被修复。

总结

Netflix 是一个优秀的企业,有着自由的精神和先进的技术,崇尚 DevOps 文化。而 Spinnaker 是他们在践行 DevOps 文化时创造出的优秀工具,通过这些工具我们能窥见他们对微服务和敏捷开发的深刻理解,希望能够给国内的开发者一些启发和帮助。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-12-21 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Netflix 的上线工具 Spinnaker
Spinnaker 的介绍 Spinnaker 是 Netflix 开源出来的持续交付工具,目的是为研发团队提供灵活的持续交付流水线,并且支持部署到测试/生产环境。Netflix 目前通过 Spinn
程序猿DD
2018/03/26
2.8K1
Netflix 的上线工具 Spinnaker
【云+社区年度征文】在Kubernetes环境中采用Spinnaker的意义
Spinnaker是最初由Netflix设计和开发的开源多云连续交付工具。它有助于将应用程序部署到各种云提供商,例如Google Cloud Platform(GCP),Amazon Web Services(AWS)和Microsoft Azure。
DevOps云学堂
2020/11/25
2.6K0
【云+社区年度征文】在Kubernetes环境中采用Spinnaker的意义
初试 Netflix 开源持续云交付平台 Spinnaker
哎_小羊
2018/01/02
5.6K1
初试 Netflix 开源持续云交付平台 Spinnaker
干货 | 日部署 6000 次,携程持续交付与构建平台实践
周光明,携程高级技术经理,目前负责携程 CI/CD 系统,致力于通过技术手段提高公司研发质量与效率, 对 Docker,K8s,Gitlab,Jenkins 等 DevOps 技术有浓厚的兴趣,Ruby 语言狂热爱好者。
携程技术
2019/07/16
8280
干货 | 日部署 6000 次,携程持续交付与构建平台实践
小红书在容器环境的 CD 实践
腾讯云开发者社区
2017/10/23
4.3K0
小红书在容器环境的 CD 实践
初试 Kubernetes 集群中 Spinnaker 平台之集群管理
上一篇文章 初试 Kubernetes 集群中使用 Helm 搭建 Spinnaker 平台 中,我们演示了如何在 Kubernetes 集群中通过 Helm 安装 Spinnaker,接下来我们使用该环境,来演示一下 Spinnaker 集群管理功能,如何使用 Spinnaker 执行 deploy 和 scale 一个应用到 Kubernetes 集群中。本次演示环境,我是在本机 MAC OS 上操作,以下是安装的软件及版本:
哎_小羊
2019/05/25
9980
跟花和尚学系统设计:明星公司之Netflix(中篇)
谁是花和尚? 花和尚是一个定居西雅图的程序员,拥有多年系统设计和开发经验。喜欢研究和总结System Design, 并传授给大家。花和尚在MITBBS一篇 "我的System Design总结" 文章获得超过8万访问量,并被多家网站和博客转载 Netflix开源项目Deep Dive 上篇给了大家很多Netflix和Netflix OSS的context。本篇将直入主题,在这里笔者选择几个有代表性且用户数量多的明星项目跟大家一起分享。 Asgard/Spinnaker 我还记得new grad的时候进公
包子面试培训
2018/04/20
9480
跟花和尚学系统设计:明星公司之Netflix(中篇)
使用 Spinnaker 自动化部署代码到 Kubernetes 示例
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/aixiaoyang168/article/details/79591566
哎_小羊
2019/05/25
1.8K0
Spinnaker生产级别集群搭建指南 顶
Spinnaker主要用来做CD,也就是持续部署,同时也包含了一些应用管理以及部署流程上的相关特性。因此,在标准的CI/CD流水线中其实是可以融合在一起的,所以Jenkins可有可无,如果有的话,可以直接从Spinnaker中进行任务触发然后自动化部署。
BGBiao
2019/09/03
5.4K3
Spinnaker生产级别集群搭建指南
                                                                            顶
在 Kubernetes 上使用 Spinnaker 构建部署流水线
Spinnaker 是一种持续交付平台,最初由 Netflix 开发,用于快速、可靠地发布软件更改。Spinnaker 使开发人员可以更轻松地专注于编写代码,而无需担心底层的云基础设施。它与 Jenkins 以及其他流行的构建工具无缝集成。
我是阳明
2021/06/25
3.2K0
在 Kubernetes 上使用 Spinnaker 构建部署流水线
分析Netflix公司产品Spinnaker的微服务实践
Netflix在开源社区有着非常大的贡献,发布了很多开源工具去做部署、打包等各种功能。Spinnaker 是 Netflix的一个开源项目,来做混合云环境部署,能够实现跨云平台的部署任务的编排。
DevOps云学堂
2020/09/22
9490
分析Netflix公司产品Spinnaker的微服务实践
技术顶牛的公司为啥没有CTO?
点击上方蓝字关注我们吧 Netflix 是美国在线影片租赁商,曾利用超过 100 亿次的用户观看纪录分析观众喜好,制作出热播剧集《纸牌屋》。Netflix 的工程文化,被很多国内一线互联网公司研究借鉴,但实际上,这家技术实力超群的公司,却是没有 CTO 的。 1 写在前面 某天晚上和下属一起吃晚饭,期间聊到 Netflix 技术那些大胆的创新,事后觉得有必要总结一下,给团队分享,让大家了解世界顶级的技术组织在技术、架构、组织和文化方面的创新。让大家在埋头干活的时候,偶尔也可以抬头看看天(大处着眼,
腾讯云数据库 TencentDB
2019/06/10
9360
技术顶牛的公司为啥没有CTO?
小红书在 Kubernetes 容器环境的CD实践
前言 容器推出以来,给软件开发带来了极具传染性的振奋和创新,并获得了来自各个行业、各个领域的巨大的支持——从大企业到初创公司,从研发到各类IT人员等等。跨境知名电商小红书随着业务的铺开,线上部署单元的
DevOps时代
2018/02/02
1.6K0
小红书在 Kubernetes 容器环境的CD实践
在 Kubernetes 上部署 Spinnaker
Spinnaker 是一种持续交付平台,最初由 Netflix 开发,用于快速、可靠地发布软件变更。Spinnaker 使开发人员可以更轻松地专注于编写代码,而无需担心底层的云基础设施,它可以和 Jenkins 以及其他流行的构建工具无缝集成。很早就想要体验下 Spinnaker 了,但是由于 GFW 的原因尝试了很多次都无功而返,这次解决了代理的问题终于顺利的在 Kubernetes 集群上成功部署上了 Spinnaker。
DevOps云学堂
2020/02/26
1.4K0
持续交付-Pipeline入门
Pipeline 是 Jenkins2.X 的最核心的特性,帮助 Jenkins 实现从 CI 到 CD 与 DevOps 的转变。
霍格沃兹测试开发Muller老师
2022/07/01
5680
从零到一,构建你的持续交付流程(五):使用Jenkins Pipeline,让交付流程与自动化
Jenkins是自动化领域非常重要的一个产品,它是基于Java语言的一个开源免费的自动化产品。
御剑
2021/10/19
1.3K0
从零到一,构建你的持续交付流程(五):使用Jenkins Pipeline,让交付流程与自动化
kubernetes集群交付安装spinnaker自动化部署
Spinnaker是一个开源的多云持续交付平台,提供快速、可靠、稳定的软件变更服务。主要包含两类功能:集群管理和部署管理
王先森sec
2023/04/24
3.3K0
kubernetes集群交付安装spinnaker自动化部署
基于开源工具链打造持续交付平台
当今IT行业发展中比较流行的几个技术,首先是微服务化,将原有的一个系统拆分成多个,意味着有多个系统需要构建、测试、部署和运维。
云大学小编
2020/06/17
8060
基于开源工具链打造持续交付平台
使用 Jenkins + KubeVela 完成应用的持续交付
KubeVela 打通了应用与基础设施之间的交付管控的壁垒,相较于原生的 Kubernetes 对象,KubeVela 的 Application 更好地简化抽象了开发者需要关心的配置,将复杂的基础设施能力及编排细节留给了平台工程师。而 KubeVela 的 apiserver 则是进一步为开发者提供了使用 HTTP Request 直接操纵 Application 的途径,使得开发者即使没有 Kubernetes 的使用经验与集群访问权限也可以轻松部署自己的应用。
CNCF
2021/09/17
1.1K0
为什么Spinnaker对CI / CD至关重要[DevOps]
Spinnaker提供了独特的构建基块,以创建量身定制的,高度协作的连续输送管道。 和他们一起去参加Spinnaker峰会吧。
yyx
2019/12/24
1.7K0
为什么Spinnaker对CI / CD至关重要[DevOps]
推荐阅读
相关推荐
Netflix 的上线工具 Spinnaker
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档