在近期于德国柏林举办的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

在Spinnaker中创建微服务部署管道相关推荐

  1. Spinnaker第二节-微服务设计

    本篇详细介绍一个spinnaker项目的微服务设计,这里之所以叫微服务设计,而不是叫微服务架构,是因为spinnaker是由Netflix和Google多个开源产品搭建的微服务节点组合成的一个微服务组 ...

  2. 微服务实战(六):选择微服务部署策略

    http://dockone.io/article/1066 微服务实战(六):选择微服务部署策略 [编者的话]这篇博客是用微服务建应用的第六篇,第一篇介绍了微服务架构模板,并且讨论了使用微服务的优缺 ...

  3. 微服务部署HTTP反向代理、负载均衡工具Træfɪk

    from: https://docs.traefik.cn/ Træfɪk 是一个为了让部署微服务更加便捷而诞生的现代HTTP反向代理.负载均衡工具. 它支持多种后台 (Docker, Swarm, ...

  4. 将微服务部署到 Azure Kubernetes 服务 (AKS) 实践

    介绍 本文的目的是:通过使用 DockerHub 和 Azure Kubernetes Service (AKS) 将之前 使用 .NET 和 Docker 构建的微服务 部署到微软 Azure 云上 ...

  5. 基于 Kubernetes 的微服务部署即代码

    在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...

  6. 什么是Spring Boot以及为什么它是用于创建微服务的首选框架

    为什么要使用Spring Boot创建微服务? Spring Boot是Java领域众所周知的首选框架,用于创建Micro Services. 使用Spring引导框架,可以非常轻松地创建Java应用 ...

  7. 微服务开发及部署_基于 Kubernetes 的微服务部署即代码

    在基于 Kubernetes 的基础设施即代码一文中,我概要地介绍了基于 Kubernetes 的 .NET Core 微服务和 CI/CD 动手实践工作坊使用的基础设施是如何使用代码描述的,以及它的 ...

  8. 快速了解云原生中的微服务应用(内含福利)

    [摘要] 云原生应用时代,如何集中团队力量在业务场景设计和实现,从而最大化软件研发ROI?如何利用云服务厂商,高效率低成本的开发高性能高可靠的微服务应用? "未来的软件一定是生长于云上的&q ...

  9. 创建微服务架构的步骤_如何快速搭建一个微服务架构?

    原标题:如何快速搭建一个微服务架构? 微服务火了很久,但网上很少有文章能做到成熟地将技术传播出来,同时完美地照顾"初入微服务领域人员",从 0 开始,采用通俗易懂的语言去讲解微服务 ...

  10. 阿里云Kuberneters微服务部署案例

    3. 如何安装Docker Desktop for Mac 如何安装Docker Desktop for Mac 4. SpringCloud微服务应用 SpringCloud微服务应用 5. Kub ...

最新文章

  1. 堆排序算法的java实现_堆排序算法的JAVA实现
  2. Android_Sqlbrite入门使用
  3. IOS UINavigationController use
  4. PHP函数-网络函数
  5. JAVA实现服务器间拷贝文件,寻找在Java服务器之间传输大文件的好方法
  6. 【LeetCode笔记】200. 岛屿数量(Java、DFS)
  7. GitBash添加tree命令
  8. linux组合键 发送指定信号_linux trap脚本信号捕获命令的使用
  9. else列表推导式 if python_python3基础09列表推导式|迭代器|生成器|匿名函数
  10. 如何枚举系统的视音频采集设备
  11. Oracle 11g 创建数据库
  12. 数显之家快讯:【SHIO世硕心语】2021年,中国最赚钱的时代到来!
  13. ZBrush的用途是什么
  14. java linkedblockingqueue_Java LinkedBlockingQueue take()用法及代码示例
  15. TikTok(抖音国际版)逆向,全球的小姐姐们,我来啦!
  16. C语言中关键字void的用法
  17. ABR CQP CRF码率控制总结
  18. 十大“元宇宙”电影,元宇宙科幻影视,其中一部为国产文学改编
  19. pdf怎样添加水印?添加图片水印的方法
  20. 手机拍照光线不够白平衡自动改变_干货 | 手机摄影专业模式设置,您知道吗?...

热门文章

  1. python学习——和python的第一次亲密接触
  2. android 标题名字,说说 Android 的 Material Design 设计(五)——可折叠式标题栏
  3. 概率图模型(PGM)学习笔记(二)贝叶斯网络-语义学与因子分解
  4. 蓝队应对攻击的常用策略二
  5. 云服务器操作系统新手,云服务器操作系统新手
  6. jpress连接不上mysql_win10+jdk+mysql+tomcat+jpress环境搭建与部署
  7. 关于CefSharp在客户端运行报错的解决方案
  8. 廖雪峰python3练习题二
  9. Docker与.Net项目类型
  10. 实现基于Keepalived高可用集群网站架构的多种方法