1. 课程导论:蓝绿发布概念、与传统发布对比、课程目标与前置知识
1.1 什么是蓝绿发布?
蓝绿发布(Blue-Green Deployment)是一种零停机的应用发布策略,其核心思想是维护两套完全独立的生产环境——蓝环境(Blue)与绿环境(Green)。在任何时刻,只有一套环境承载全部生产流量,另一套环境则处于待命或空闲状态。
- 蓝环境(当前生产):运行当前稳定版本,对外服务所有用户请求。
- 绿环境(新版本):部署新版本应用,经过内部验证后,通过路由切换将流量瞬间从蓝环境切至绿环境。
- 快速回滚:若新版本出现问题,只需将流量切回蓝环境,即可在秒级完成回滚。
关键指标:蓝绿发布可将发布切换时间控制在 1 秒以内,回滚时间同样在秒级,远低于传统滚动发布的分钟级回滚。
1.2 蓝绿发布 vs 传统发布方式
传统发布方式主要包括停机发布和滚动发布。下表从多个维度对比三种发布策略的差异:
| 对比维度 | 停机发布 | 滚动发布 | 蓝绿发布 |
|---|---|---|---|
| 停机时间 | 分钟~小时级 | 接近零(但存在窗口) | 零停机 |
| 回滚速度 | 重新部署,分钟级 | 逐步回滚,分钟级 | 秒级(路由切换) |
| 环境数量 | 1 套 | 1 套 | 2 套(蓝+绿) |
| 资源成本 | 低 | 低 | 较高(双倍资源) |
| 发布风险 | 高 | 中 | 低 |
| 适用场景 | 非关键业务、允许停机 | 微服务、无状态应用 | 关键业务、高可用要求 |
实践建议:对于核心交易链路或面向用户的 Web 服务,蓝绿发布是首选。对于内部工具或非关键服务,滚动发布在成本上更具优势。
1.3 课程目标
本课程旨在帮助学员掌握从零构建蓝绿自动化发布平台的完整技能栈,最终实现通过自助服务 API 和标准模板一键完成蓝绿发布。具体目标如下:
- 理解蓝绿发布原理:掌握路由切换、健康检查、流量管理、回滚机制等核心概念。
- 设计自助服务 API:使用 RESTful 风格设计发布申请、审批、执行、回滚等 API 接口。
- 构建标准模板:基于 Helm / Kustomize 制作可复用的蓝绿发布模板,支持多环境参数化。
- 集成 CI/CD 流水线:将蓝绿发布与 Jenkins / GitLab CI / ArgoCD 等工具深度集成。
- 实现自动化与可观测:通过 Prometheus + Grafana 监控发布过程,自动触发回滚。
1.4 前置知识要求
为顺利学习本课程,建议学员具备以下基础:
| 领域 | 具体要求 | 推荐学习资源 |
|---|---|---|
| 容器与编排 | 熟悉 Docker 镜像构建、Kubernetes 核心资源(Deployment、Service、Ingress) | Kubernetes 官方教程、CKAD 课程 |
| CI/CD 工具 | 了解 Jenkins Pipeline 或 GitLab CI 基本语法 | Jenkins 官方文档、GitLab CI 快速入门 |
| API 设计 | 理解 RESTful API 设计原则、HTTP 方法、状态码 | REST API 设计规范、OpenAPI 3.0 规范 |
| 模板引擎 | 了解 Helm Chart 结构或 Kustomize overlay 机制 | Helm 官方文档、Kustomize 入门 |
| 编程语言 | 具备 Python 或 Go 基础,能编写简单脚本 | Python 官方教程、Go by Example |
注意:本课程不从头讲解 Kubernetes 基础。若对 Pod、Service、Deployment 等概念不熟悉,建议先完成 Kubernetes 入门课程再学习本课程。
1.5 课程章节概览
全课程共 30 章,分为五个阶段:
- 基础篇(第 1-6 章):蓝绿发布原理、网络路由策略、健康检查机制、环境隔离设计。
- API 设计篇(第 7-12 章):自助服务 API 规范、审批流设计、回调与 Webhook、API 安全。
- 模板工程篇(第 13-18 章):Helm Chart 模板制作、Kustomize 参数化、多环境配置管理。
- 集成与自动化篇(第 19-24 章):Jenkins Pipeline 集成、ArgoCD 自动化、GitOps 工作流。
- 进阶与实战篇(第 25-30 章):可观测性集成、自动回滚策略、多集群蓝绿发布、生产案例。
学习建议:每章均配有可运行的代码示例和实验环境。建议在本地或云上搭建一套最小化 Kubernetes 集群(如 minikube 或 kind),边学边练效果最佳。