1. 概述

在本文中,我们将介绍 Spinnaker,一个由 Netflix 开源的持续交付平台。我们可以使用它在多个云服务商上部署应用程序。

Spinnaker 基于 Spring Boot 构建,支持多种云服务商

我们会了解它是如何工作的,以及适合哪些场景。

2. 背景知识

回顾软件开发的历史:

  • 最初采用瀑布模型,发布频率低。
  • 后来转向敏捷开发,每轮迭代交付功能。
  • 但即便如此,我们并没有每轮都部署到生产环境,导致用户无法及时使用新功能。

为什么部署频率不高?

  • 部署步骤通常需要手动执行,容易出错。
  • 有人认为频繁部署会增加风险。

如今我们普遍认为,小步快跑反而风险更低。即使出错,也更容易定位和修复。

3. Spinnaker 简介

Spinnaker 支持持续交付(Continuous Delivery)和持续部署(Continuous Deployment)

  • 持续交付(CD):所有部署准备就绪,但需要人工审批后才部署。
  • 持续部署(CD):完全自动化,无需人工干预,代码提交后自动部署到生产环境。

从代码提交到生产部署,中间可以执行多个步骤,比如:

  • 编译代码
  • 单元测试
  • 部署到测试环境
  • 执行功能测试

这些步骤通过“Pipeline(流水线)”进行配置。

Spinnaker 允许我们创建这样的流水线,并支持部署到几乎所有主流云平台

4. 核心组件

Spinnaker 主要由两个部分组成:

  • 云服务商抽象层
  • 持续交付工具

4.1. 传统云部署的问题

各大云服务商提供的服务大致相同,例如:

  • 虚拟机实例
  • 无服务器架构(Serverless)
  • 容器支持

⚠️ 但它们的配置方式差异巨大,这导致切换云服务商成本高,形成“云厂商锁定”。

Netflix 希望能灵活切换云服务商,因此构建了统一的抽象层。

4.2. 抽象层设计

使用 Spinnaker 时,无论使用哪个云服务商,操作体验都是一致的

它支持:

  • Amazon Web Services(AWS)
  • Microsoft Azure
  • Google Cloud Platform(GCP)
  • OpenStack
  • Google App Engine
  • Kubernetes

这意味着我们可以轻松切换云服务商,甚至同时部署到多个平台,实现高可用性

另一个关键设计是“以应用为中心”的理念:

  • 传统云平台展示的是资源(如 EC2 实例)
  • Spinnaker 展示的是应用,资源只是附属信息

我们更关心的是应用是否运行正常,而不是具体用了哪些资源

4.3. 持续交付平台

Spinnaker 在抽象层之上构建了完整的持续交付平台

它类似于 Jenkins,但对云平台集成更好,配置更简洁。

常见的触发方式包括:

  • Jenkins 构建
  • Docker 镜像上传
  • Git 提交代码

部署过程可以包括:

  • 构建镜像
  • 启动容器
  • 自动化测试
  • 手动审批
  • 多种部署策略

例如,我们可以在部署新版本时选择“蓝绿部署”或“金丝雀发布”,确保新版本稳定后再替换旧版本。

5. Netflix 的云模型

每个应用由一个或多个“Server Group(服务器组)”组成,每个服务器组中运行的是同一版本的应用。

命名规范如下:

<应用名>-<(可选)环境>-<(可选)描述>-<版本号>

示例:

myapp-prod-db-1.0.0
  • prod 表示该服务器组用于生产环境
  • db 表示用途是数据库服务

Cluster(集群) 包含一个或多个 Server Group,它们具有相同的名称、环境和描述,但运行的是不同版本的应用。

如果某个实例失败,系统会自动替换。

还可以根据负载自动扩容服务器组

6. 部署策略

Spinnaker 默认采用“Red/Black(红/黑)”部署策略

流程如下:

  1. 部署新的 Server Group(新版本)
  2. 检查新版本是否健康
  3. 启用新 Server Group
  4. 禁用旧 Server Group

⚠️ 这种策略的好处是便于回滚。如果新版本出问题,只需重新启用旧 Server Group 即可。

7. 为什么选择 Spinnaker

  • 专注于应用本身,而非底层资源
  • 支持多云部署
  • 灵活切换云服务商
  • 提供丰富的部署策略

对于需要在多个云平台上部署和管理应用的团队来说,Spinnaker 是一个非常理想的工具。

8. 总结

Spinnaker 凝聚了 Netflix 在云原生部署方面的丰富经验

我们可以直接利用这些经验,快速构建自动化部署流程,而无需重复造轮子。

✅ 推荐阅读:《Continuous Delivery with Spinnaker》电子书(免费下载)



原始标题:Intro to Spinnaker