写点什么

在 Spinnaker 中创建微服务部署管道

  • 2016-03-07
  • 本文字数:2123 字

    阅读完需:约 7 分钟

在近期于德国柏林举办的 microXchg 2016 大会上,Rick Buskens 进行了一场名为“在Spinnaker 中实现微服务部署管道”(Microservice Deployment Pipelines with Spinnaker)的演讲,在演讲中谈到了Netflix 与Google 在 Spinnaker 这个由 Netflix 设计的持续交付平台上的合作关系。Spinnaker 可以为用户创建构建管道,保证了微服务应用程序部署的安全性与可预见性,并且支持多种云环境。

Buskens 是来自 Google 开发者基础设施部门的一位工程经理,他在演讲的开头部分说道,Google 对于 Netflix 所主导开发的 Spinnaker 这个持续交付工具非常感兴趣。Netflix 在使用微服务架构构建流媒体视频平台方面的工作是众所周知的,整个架构中包含了大量组件,并且具有极高的动态性,这也表现出 Netflix 部署代码的频率之高。

任何一个微服务出现故障都有可能破坏用户体验,因此安全的部署是非常关键的,而 Netflix 在确保“工业级”的安全部署方面具有相当丰富的经验。因此,Google 已经与 Netflix 团队展开了合作,目的是创建高效与高适用性的工具,以支持基于微服务的项目的持续交付。

我们清楚有许多社区中的朋友还不愿意采用持续交付流程,因为它过于复杂。他们也不愿意选择某个云环境,是担心将自己的业务锁死在某个平台上。因此,Google 希望能够为用户提供良好的工具,帮助用户将应用可靠地部署在云环境中。

总的来说,通过与 Spinnaker 社区的合作,我们希望为这方面的工具实现标准化。

安全的部署之所以难以实现,是由于部署的“非密封性”,而且常常会受到手动交付流程的影响。尤其当应用的责任由多个开发与运维团队共同承担的时候,这种现象会更为明显。这将导致对于目前所部署内容的不确定性、容易出错的部署、以及失败的部署,而且往往需要那些并不熟悉所部署的组件的人参与到这一过程中。

Buskens 认为,持续交付(CD)能够缓解安全方面的风险。CD 的核心原则包括对每个变更都进行预发布、对生产环境的准备情况进行验证、自动化、避免故障以及最大化部署的可靠性与可预见性。在实现这些原则的时候,可以利用不可变基础设施(例如 VMDK AMI 等服务器镜像,或者 Docker rkt 等容器技术)等技术以避免配置的差错、创建特定于环境的部署步骤、提供蓝绿发布等策略、以及在测试与反馈循环中包含部署标志。

Netflix 所创建的 Spinnaker 能够通过构建管道的创建与管理,以编程方式解决以上问题中的一部分。Spinnaker 本质上是一个面向云环境的持续交付平台,它取代了 Netflix 的开源项目 Asgard 持续交付平台。Spinnaker 平台的输入是构建的结果(例如通过 Jenkins 等持续集成工具所构建的包),它所生成的镜像可部署至某个目标环境。多个管道构建出了一个小型的工作流,提供了部署的阶段和提升门(promotion gate)(例如“提升至生产环境”),这些管道可以链接在一起,以生成一个完整的持续交付工作流。

Spinnaker 中的核心概念包括:“服务器组”,它本质上就是一种“安全、实现了负载均衡、并且具有容错性的微服务”,其中包括了基本配置信息、一个负载均衡器、安全组、机器类型以及分发策略。一个“集群”,即多个服务器组的一种逻辑分组。还有一个“应用程序”,代表多个集群的一个逻辑分组。部署过程包括镜像的发布、流量转换的管理、以及能够简单地进行回滚(如有必要)的功能。Spinnaker 还提供了可适配的部署策略,支持蓝绿发布、高地人发布(highlander,意指只能有一个存在!)、或金丝雀发布。

重点在于,Spinnaker 是基于(Spinnaker)在云环境中部署工业级别的应用程序的经验而设计的。我们很清楚它能够正常运行、并且有良好的伸缩性,它是一系列关键的最佳实践的完美展现。

一个 Spinnaker 管道由配置与阶段所组成。配置的内容包括一系列触发器、参数以及通知,而阶段就是指“上下文感知的操作”,例如“发布至预发布环境”。管道的设计目标是具有良好的可扩展性与重用性,而且通常会与上游的 CI 系统(例如 Jenkins)相集成。多个管道将链接在一起以创建一个工作流。

Spinnaker 目前支持多种云环境,包括 Amazon Web Services、Microsoft Azure、Cloud Foundry 以及 Google Compute Engine。

在 Google 看来,当我们为客户提供 DevOps 解决文案时,可以充分利用 Spinnaker 的强大功能。它是一种支持多个云环境的解决文案,因此我们非常希望确保用户能够选择正确的工具与基础设施,以及流程,让用户能够更快、更可靠地交付软件。

通过对 Spinnaker 的“ clouddriver ”微服务进行扩展,可支持更多的云环境。

Netflix 在 2015 年 11 月 16 日将 Spinnaker 开源,目前已经运用在 Netflix 产品的生产环境中了。 Spinnaker 的代码是开源的,可从 GitHub 上下载,它在 Slack 上建立了一个专门的频道,并且在 StackOverflow 上有一个专门的讨论标签。该项目将很快发布一个公开的路线图。如果用户想快速地尝试一下这个项目,可以使用能够“一键完成”的 Google Cloud Launcher Spinnaker 平台,在 spinnaker.io cloud.google.com/solutions 上可以找到操作指南。

用户可以在会议专属的 Youtube 频道上欣赏 Rick Buskens 的演讲“在Spinnaker 中创建微服务部署管道”的视频。

查看英文原文: Creating Microservice Deployment Pipelines with Netflix’s Spinnaker: A Perspective from Google

2016-03-07 18:003139
用户头像

发布了 428 篇内容, 共 177.4 次阅读, 收获喜欢 38 次。

关注

评论

发布
暂无评论
发现更多内容

Java中Map集合的三种遍历方式

@下一站

Java 程序设计 map 12月日更 12月月更

Android Studio开发Android APP

梦笔生花

Android Studio 开发环境 新建工程

设计模式之美——里式替换(LSP)

GalaxyCreater

设计模式

Flink 在米哈游的应用实践

Apache Flink

大数据 flink 实时计算

Web入门:CSS下拉图片

小院里的霍大侠

JavaScript Web 初学者 入门者

架构误区系列10:不合理的分层

agnostic

软件分层

架构实战营 3-4 架构设计后期随堂练习

西山薄凉

「架构实战营」

Web入门开发【二】

小院里的霍大侠

编程开发 初学者 入门实战 Web入门

HTTP通用首部字段

穿过生命散发芬芳

HTTP 12月月更

FFA 2022 主会场 Keynote:Flink Towards Streaming Data Warehouse

Apache Flink

大数据 flink 实时计算

基于Go的缓存实现

俞凡

架构

【web 开发基础】PHP 中的预定义数组详解之一 (47)

迷彩

数组 全局变量 PHP基础 预定义数组

为什么更推荐使用组合而非继承关系?

JAVA旭阳

Java 架构

WEB21

Lenyi

网络安全 CTF ctfshow 爆破

SRE运维解密-应对过载

董哥的黑板报

微服务 SRE 限流 SRE实践

架构实战营 3-5 消息队列备选架构随堂练习

西山薄凉

「架构实战营」

MMEval正式支持OneFlow评测

OneFlow

机器学习 深度学习 算法

Zebec Chain缘何能成为新晋应用链,熊市下又为何值得我们关注?

股市老人

【Java基础】Win10如何配置jdk环境变量(配置java环境变量)

No8g攻城狮

Java、 java 并发 Java IO

WEB23

Lenyi

网络安全 CTF ctfshow 爆破

OpenTelemetry系列 (四)| 如何使用Java Agent来实现无侵入的调用链

骑牛上青山

Java javaagent 调用链 OpenTelemetry 微服务调用链

2022年浪过的那些城市

SAP虾客

杭州 2022年 无锡 东莞 SAP项目

Flink 1.16:Hive SQL 如何平迁到 Flink SQL

Apache Flink

大数据 flink 实时计算

SAP MM SPED输出报错-No authorization for delivery from shipping point US##-之对策

SAP虾客

SAP MM SPED VL31N 公司间STO

运维进阶训练营 -W09H

赤色闪电

运维

极客时间运维训练营第九周作业

好吃不贵

2022-12-24:给定一个字符串s,其中都是英文小写字母, 如果s中的子串含有的每种字符都是偶数个, 那么这样的子串就是达标子串,子串要求是连续串。 返回s中达标子串的最大长度。 1 <= s的长

福大大架构师每日一题

Linux 算法 Shell 福大大

设计模式之美——对扩展开放、对修改关闭

GalaxyCreater

设计模式

模块三-外包学生管理系统的架构文档

悟空

学生管理系统架构

学生管理系统

KING

在Spinnaker中创建微服务部署管道_服务革新_Daniel Bryant_InfoQ精选文章