写点什么

在 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:003128
用户头像

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

关注

评论

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

Dubbo框架学习笔记四

风翱

dubbo 12月日更

如何基于 Docker 快速搭建 Springboot + Mysql + Redis 项目

秦怀杂货店

Java redis Docker springboot redis sentinel

明道云对接小鹅通,沉淀内容付费平台数据

明道云

什么是Kubernetes?Kubernetes是怎样工作的?

Ethereal

云计算 Kubernetes

TCP/IP的底层队列

程序员历小冰

网络 TCP/IP 28天写作 12月日更

[Pulsar] Pulsar Resources介绍

Zike Yang

Apache Pulsar 12月日更

【docker 总结】第四篇 - 镜像和容器操作

Brave

Docker 12月日更

管理中的推理事件随笔

搬砖的周狮傅

随笔杂谈 推理

5分钟认识802.11标准,言简意赅!

Ethereal

网络技术 无线技术 网络技术联盟站 802.11

Enum Parse 中的坑

喵叔

28天写作 12月日更

山的那一边,是什么?(16/28)

赵新龙

28天写作

All in one:如何搭建端到端可观测体系

阿里巴巴云原生

阿里云 云原生 可观测

Hystrix Dashboard

李子捌

微服务 28天写作 12月日更

Apache Log4j2,RASP 防御优势及原理

阿里巴巴云原生

阿里云 云原生 漏洞 可观测 Apache Log4j2

React进阶(七):props 属性介绍

No Silver Bullet

React 12月日更 props

数据库牛人是如何进行SQL优化的?

Ethereal

数据库 sql SQL优化

Go+ XML 编码和解码处理教程(5.5)

liuzhen007

28天写作 12月日更

数据分析流程浅析

圣迪

数据分析 数据 CRISP-DM

DotNetCore 开发工具箱之调度小能手——Coravel

为自己带盐

dotnet 28天写作 12月日更 Coravel

开源轻量级 IM 框架 MobileIMSDK v6.1.2 发布

JackJiang

TCP websocket 即时通讯 IM MobileIMSDK

实用机器学习笔记十六:循环神经网络

打工人!

深度学习 学习笔记 循环神经网络 机器学习算法 12月日更

前端开发:Vue中获取input输入框值的方法

三掌柜

28天写作 28 12月日更 12月

如何在 AWS 云中从 Amazon EC2 启动 RHEL 8?

Ethereal

云计算 AWS RHEL 8 Amazon EC2

明道云荣获2021亚洲最佳职场“最佳创新奖”荣誉!

明道云

JavaScript操作 DOM 的这些事件基础

你好bk

JavaScript 前端 DOM BOM WebApi

当我们在聊高可用时,我们其实在聊什么?

xcbeyond

28天写作 12月日更

Spring Boot Serverless 实战系列“架构篇” | 光速入门函数计算

阿里巴巴云原生

阿里云 Serverless 架构 云原生 函数计算

小程序的发布【小程序专题3】

坚果

小程序 28天写作 12月日更

Python爬虫120例之案例58,手机APP爬虫,“武器库”的准备and皮皮虾APP的测试

梦想橡皮擦

12月日更

100行代码让您学会JavaScript原生的Proxy设计模式

汪子熙

JavaScript 设计模式 代理模式 28天写作 12月日更

读《思辨与立场》-04自我理解

wood

28天写作 批判性思维 思辨与立场

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