前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >为什么Spinnaker对CI / CD至关重要[DevOps]

为什么Spinnaker对CI / CD至关重要[DevOps]

作者头像
yyx
修改2019-12-24 18:18:34
1.6K0
修改2019-12-24 18:18:34
举报
文章被收录于专栏:Opensource翻译专栏

Spinnaker提供了独特的构建基块,以创建量身定制的,高度协作的连续输送管道。 和他们一起去参加Spinnaker峰会吧。

图片来源:opensource.com
图片来源:opensource.com

需要许多工具才能将工件交付生产。用于构建和测试的工具,用于创建可部署工件的工具(例如容器映像),用于身份验证和授权的工具,用于维护基础结构的工具等等。将这些工具无缝集成到工作流程中可能对工程文化具有革命性意义,但个人进行这项工作可能是一项艰巨的任务。

随着组织的成熟,工具的数量和管理人数都趋于增长,这常常导致混乱和混乱。定制的持续交付(CD)过程可能会在较小的规模上起作用,但是维护和理解变得越来越具有挑战性。新工程师要花很长时间才能发现并整理部署最简单变更所需的所有工具。

创建Spinnaker就是为了解决这个问题。它是一种可扩展的通用工具,可为用户提供构建定制的连续输送管道的基础。当可以使用由Netflix和Google等主要公司已经信任和开发的解决方案来处理成千上万的应用程序交付时,无需花费时间并冒着更大的风险来发明自己的方法。

Spinnaker起源

Netflix曾经有一个零散的连续输送的故事。每个组织的交付系统都是专门为该组织构建的,因此其他组织通常无法从该工作中受益。团队认为自己与众不同,并与Asgard一起致力于詹金斯的工作。所有这些重复的工作不仅浪费,而且使团队难以掌握最新的交付最佳实践并保持最新状态。

2014年,团队同意Jenkins之类的通用持续集成(CI)工具无法为构建具有所需安全性和灵活性的持续交付平台提供合适的基础。为此,一个新的工具诞生了。 Netflix的交付工程团队与Google合作,构建了Spinnaker,这是一个多云连续输送和基础架构管理工具,该工具可以集中管理并且足够灵活,可以让团队自定义交付内容,但是要进行标准化,以便为所有人带来最佳实践和安全性。 Spinnaker汇集了数十年的经验,将软件编写和交付到每个人都可以使用的东西中,而无需经历同样的痛苦。

自从Spinnaker在开源社区中被广泛采用以来,维护者一直在不断添加新功能和集成,从而使Spinnaker在Netflix,Google,Airbnb,Pinterest和Snap等公司中变得更加有用和具有粘性。

实践中的Spinnaker

使用Spinnaker,可以构建由阶段组成的灵活管道,以按所需方式交付软件。可以有一个“部署”阶段,该阶段使用“蓝/绿”策略将零停机时间编排为新基础架构的创建和清理。如果要对发布过程进行更直接的控制,可以添加一个“手动判断”阶段,等待外部确认。这些阶段可以编织成能够代表复杂和自定义交付工作流程的管道。

流水线的灵活性以及一系列全面的内置阶段使Spinnaker能够跨团队追赶。一个明确的例子是Canary阶段,该阶段评估一组指标以确定部署是否正常。在Spinnaker之前,许多团队无法在其部署管道中使用金丝雀版本,因为太麻烦了,无法与他们的旧金丝雀系统集成。 “内置电池”的Canary阶段是carrot,这使许多团队都来实践Spinnaker。

如果需要自定义行为,那么阶段还可以提供扩展点,以封装特定于组织或团队的逻辑。这些扩展可以是开放源代码,也可以是封闭源代码。例如,可以添加自定义功能,以更新Jira的状态,刷新缓存或为数据库快照。

Spinnaker定制

作为通用工具,Spinnaker可以开箱即用地做很多事情。但是,当自定义它时,确实会有用。当将集成添加到组织中的其他工具或共享最佳实践时,帮助团队安全可靠地部署和操作软件变得更加容易。

我们为Spinnaker添加了各种自定义集成,以使其具有粘性。以下内容可能引发有关如何自定义Spinnaker以适合组织的想法。

提高开发人员效率

已经完成的一个简单的UI自定义操作是,在每个实例旁边都有一个图标,可将SSH命令复制到该实例。通过使用特定于Netflix的组件覆盖UI中的“实例详细信息”面板来做到这一点,该组件从配置文件中获取一些信息(基本SSH命令),将实例ID插入该命令中,并使其作为一个剪贴板小按钮可用实例ID旁边。

提高安全性

在过去的五年中,与安全团队紧密合作,以将最佳实践应用于Spinnaker。其中一个示例是如何为每个应用程序自动创建身份和访问管理(IAM)角色,并使用这些角色来限制谁可以在AWS中做什么,从而为每个团队提供完成工作所需的权限。

使用两个部分来实现这一目标:(1)将自定义类添加到Clouddriver(执行云操作的微服务)中,以与(2)我们的安全团队维护的Lambda函数进行对话。

对于每个云更改操作,都会与AWS进行检查,以了解该应用名称是否存在IAM角色;如果没有,将与安全服务联系以查看是否应创建一个。如果需要创建角色,会将该安全服务与所需信息一起调用,以确保成功创建IAM角色。

通过此设置,可以轻松控制启动每个实例的IAM配置文件,同时将IAM功能的实质内容留给安全团队。这使他们能够灵活地更改其实现,添加功能或进行其他审核,而不必更改Spinnaker。

我们经常使用Spinnaker挂钩的模式以及由此产生的合作伙伴团队服务电话。它有助于将Spinnaker的关注点(作为交付平台)与合作伙伴团队管理的关注点分开,例如安全性。这种分离还支持合作伙伴团队独立创新的能力,从而为我们的用户带来更好,更安全的交付体验。

改善可追溯性和审核

自定义集成的最后一个示例是将Spinnaker事件流发送到另一个服务。 Spinnaker会执行很多变异操作,通常可能需要记录这些事件以进行审核或合规性目的。我们会将所有事件发送到大数据存储,以便公司中的其他团队可以使用这些数据。

还管理符合PCI的环境。以前,有一个位于同一地点的Spinnaker实例,该实例在此隔离的环境中运行以保持合规性。今年,在Spinnaker中启用了Fiat授权微服务,对其进行了加固,并收敛于通过一个Spinnaker维护所有属性。

结论

连续输送很难正确完成。 Spinnaker是一个经过强化和维护良好的工具(上个月有大约460个合并的请求),已经与流行服务进行了许多现有集成,同时还支持自定义集成以提高灵活性。 Netflix,Google,Amazon,Nike,Cisco和Salesforce等大型公司正在为Spinnaker做出积极贡献。采用Spinnaker可使您集中进行连续输送并获得最佳实践。与其重新发明wheel,何不加入Spinnaker社区?

本文系外文翻译,前往查看

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

本文系外文翻译前往查看

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
持续集成
CODING 持续集成(CODING Continuous Integration,CODING-CI)全面兼容 Jenkins 的持续集成服务,支持 Java、Python、NodeJS 等所有主流语言,并且支持 Docker 镜像的构建。图形化编排,高配集群多 Job 并行构建全面提速您的构建任务。支持主流的 Git 代码仓库,包括 CODING 代码托管、GitHub、GitLab 等。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档