Gartner的报告指出,到2020年,将有50%的传统老旧应用会以云原生的方式被改造,到2022年,云原生和容器化的普及率将达到75%。

随着2020 KubeCon线上大会的结束,我们发现企业拥抱云原生、Kubernetes和Istio的热情空前高涨,这些技术无一例外都为“微服务”的普及铺设了更平坦的道路。

企业在拥抱云原生时,将伴随着对现有环境和业务的云原生化迁移,这往往会经历长时间多云环境共存的痛处。以迁移到Kubernetes为例,企业一般会选择从边缘业务逐渐延伸到核心业务的迁移方式,而迭代并不会因此停止,这就对交付和部署提出了新的挑战

更糟糕的是,如果企业已经采用了微服务架构,那么在这种多云环境下,对多个微服务的部署更是一种无法预测的行为。

因此,多云环境下的部署问题成为企业拥抱云原生、容器化和微服务时难以逾越的鸿沟,越来越多的企业已经注意到自己持续部署能力不足,并且尝试使用不同的工具组合来解决问题

例如,常见的是使用Ansible支持传统虚拟机的部署,使用Jenkins 及其插件支持 Kubernetes 环境的部署。

但由于这些工具对云和部署要素的抽象概念的定义并不一致,因此相关工作人员需要学习不同的概念,且需要经历不同的学习曲线,使用这些工具组合将会导致部署行为进一步陷入混沌状态。

大部分传统企业倾向于将运维团队设立为独立的组织架构,利用运维团队与开发团队天然的冲突和利益不一致,使得两者在这种组织冲突的平衡中实现产品交付和部署的动态平衡。

但从长远来看,这显然是不合理的。

像 Netflix 这种大型的敏捷团队更愿意将运维角色与开发角色融合,将运维职能沉淀到团队内部闭环,通过为团队提供一致性的工具,实现每个团队对持续部署的独特需求。

这种内部闭环使信息流转问题得到了解决,由开发人员来决定何时以及如何进行部署,研发效率和交付质量得到了显著提升。

迁移至云原生所经历的困境也正是Netflix开发团队对统一化部署工具的诉求:云原生、混合云、持续自动化与安全部署。

Spinnaker 正是 Netflix 多年来在持续部署方面的实践经验的结晶。它是一款开源的、支持云原生和多云环境的持续部署工具,目前支撑着 Netflix 数百个微服务和数万个节点混合云环境的持续部署。

2019年3月,Netflix和Google共同成立持续交付基金会(Continuous Delivery Foundation, CDF),并将Spinnaker捐赠给CDF,和大名鼎鼎的CNCF一样,CDF成了Linux基金会的一部分。CDF的其他成员包括Jenkins、Jenkins X、Tekton等顶尖的持续集成和持续部署项目。

毫无疑问,在CDF中,Jenkins的用户数量是最庞大的,但我认为Jenkins更多地属于持续集成(Continuous Integration,CI)工具。

作为持续部署的集大成者,Spinnaker势必会成为团队技术选型的重点考虑对象。

在环境支持方面,Spinnaker支持云原生多云环境的持续部署,例如AWS、Azure、Google 等云提供商,以及国内三大云提供商——腾讯云(TKE 和 EKS)、阿里云(ACK 和 ASK)、华为云(CCE)等标准公有云均提供支持,此外虚拟机部署场景也正在被完善。

Spinnaker 支持集成触发器来监听事件,从而实现自动触发和自动部署。此外,其内置持续部署的最佳实践(例如蓝绿部署和金丝雀部署),并提供了开箱即用的方法。

在学习Spinnaker 时,由于其概念复杂且上手难度较大,加上几乎没有适合中国工程师的学习资料,我遇到了非常多的“坑”。

我想,其他希望学习Spinnaker 的同学也会遇到同样的困境,所以我决定将自己的实践经验分享给所有人,进而撰写了《Spinnaker实战:云原生多云环境的持续部署方案》一书。

Spinnaker:云原生多云环境持续部署的未来这样玩!_大数据

本书通过对Spinnaker抽丝剥茧,带领读者学习如何构建科学的持续部署流水线,并通过实战和案例进一步介绍了在微服务及 Service Mesh 环境下持续部署的最佳实践。

本书还抛开技术层面,站在人和团队的角度,分享了笔者关于如何将应用迁移至 Spinnaker的实际落地经验。

本书内容

本书共分13章,其中每章的内容简介如下。

第1章 声明式持续部署概述

本章将介绍持续交付与持续部署的概念,明确命令式与声明式的差异,聚焦于声明式持续部署,讲解常见的声明式系统、声明式脚本流水线的概念及使用意义。

第2章 管理云基础设施

本章将介绍在云原生和多云环境的背景下如何管理云基础设施,主要内容包括将应用迁移至云原生环境及混合云环境所面临的挑战、对云基础设施的组织、流量组织形式,以及持续部署工具的对比。

第3章 Spinnaker 简介

本章将初步介绍Spinnaker相关内容,主要内容包括Spinnaker的基本概念、应用管理、应用程序部署、云提供商简介,以及Spinnaker架构。

第4章 安装Spinnaker

本章将介绍在不同的系统环境下如何安装Spinnaker。首先介绍安装Spinnaker的环境要求,然后介绍正式安装部署Spinnaker涉及的流程,包括选择云提供商、运行环境、存储方式等。

第5章 Spinnaker 基本工作流程:流水线

本章将介绍 Spinnaker 的核心——流水线的组成和基本操作,主要内容包括流水线的管理、部署制品、启动参数、不同阶段、触发器、通知,以及流水线表达式、版本控制和审计等,还将辅以动态流水线具体示例进行说明。

第6章 深入核心概念

本章将详细介绍 Spinnaker 流水线的配置及不同的阶段类型,主要内容包括虚拟机阶段、Kubernetes阶段、集成外部系统阶段、流程控制阶段等,还会介绍部署制品类型、配置触发器、流水线模板、消息通知等内容。本章涉及的内容非常多,读者可以有针对性地选择阅读。

第7章 自动金丝雀分析

本章将介绍 Spinnaker 的高级部署功能——自动金丝雀分析,主要内容包括自动金丝雀发布概述、安装组件、配置金丝雀、获取金丝雀报告等,还会通过一个实践案例进行辅助讲解。

第8章 混沌工程

本章将介绍如何在 Spinnaker中实施自动化混沌工程,主要内容包括为什么要引入混沌工程概念,以及混沌工程的理论基础、五大原则、实践方法等。

第9章 使部署更加安全

本章将介绍如何使用Spinnaker 内置的功能让生产部署更加安全,主要内容包括集群部署、流水线执行、自动验证阶段相关知识点、审计和可追溯。

第10章 最佳实践

本章将介绍在 Kubernetes 环境下实现南北流量、东西流量自动灰度部署的流程,这两个实例的流程基本是一致的。

第11章 生产建议

本章将介绍在生产环境下使用Spinnaker 时需要注意的事项,比如与SSL、认证、授权、Redis配置优化、横向扩容、MySQL、监控相关的内容。

第12章 扩展 Spinnaker

本章将介绍如何对 Spinnaker 进行二次开发,主要内容包括开发环境的配置,以及在实际开发过程中编写新阶段的注意事项。

第13章 迁移到 Spinnaker

本章将从人和组织架构的角度介绍如何将应用迁移到Spinnaker,以及迁移过程中需要遵循的原则。经过本章的学习,读者可以尝试将Spinnaker实践应用到实际项目中。

目标读者

本书的目标读者有以下几类。

  • 云原生、Docker和Kubernetes研发工程师。
  • SRE工程师。
  • 微服务架构下的开发人员和架构师。
  • 行业解决方案架构师。
  • 研发效能和研发质量管理人员。

以上内容节选自博文视点新书《Spinnaker实战:云原生多云环境的持续部署方案》,如果想了解更多关于Spinnaker的技术细节,欢迎选购本书,沉浸阅读。

Spinnaker:云原生多云环境持续部署的未来这样玩!_编程语言_02

▊《Spinnaker实战:云原生多云环境的持续部署方案 

王炜,王振威 著

  • 开创了云原生多元环境持续部署工具Spinnaker的先例,讲解深入
  • 案例基于大厂一线工程师的实际工作,具有非常好的指导性和实践性
  • 提供丰富的图片资源和实践源码,帮助读者快速上手

本书聚焦于云原生和多云环境的持续部署方案,共分13章,内容涉及声明式持续部署概述、Spinnaker基础与实战、金丝雀发布与灰度发布、部署安全、混沌工程及生产化建议等,结构清晰,循序渐进,深入浅出。

在持续部署最佳实践方面,本书重点介绍了如何实施灰度发布、自动金丝雀分析和混沌工程,这些高级部署功能是Netflix 公司实现快速而稳定迭代的核心技术。关于如何落地Spinnaker,本书站在人和组织架构的视角,为迁移团队提供了指导性的意见,解决了新技术落地难的问题。