1. 课程导论:蓝绿发布的概念、为什么需要门禁、Kubernetes流量切换的挑战
1.1 蓝绿发布的核心概念
蓝绿发布(Blue-Green Deployment)是一种零停机或接近零停机的应用发布策略。其核心思想是维护两套完全独立的生产环境:蓝环境(当前稳定版本)和绿环境(新版本候选)。在任意时刻,只有一套环境承载全部生产流量,另一套环境处于待命或闲置状态。
关键特征: 两套环境、瞬时切换、快速回滚、环境隔离。
| 角色 | 状态 | 流量承载 | 典型操作 |
|---|---|---|---|
| 蓝环境 | 活跃(Active) | 100% 生产流量 | 运行当前稳定版本 |
| 绿环境 | 闲置(Idle) | 0% 生产流量 | 部署新版本、执行集成测试 |
| 切换后蓝环境 | 待命(Standby) | 0% 生产流量 | 保留旧版本用于快速回滚 |
| 切换后绿环境 | 活跃(Active) | 100% 生产流量 | 运行新版本 |
1.2 为什么需要门禁(Gate)
在理想情况下,蓝绿发布似乎只需要一个简单的流量切换动作。然而,在生产环境中,未经验证的流量切换可能引发严重故障。门禁(Gate)机制正是在流量切换前设置的一道自动化校验屏障,确保新版本满足所有预设条件后才能放行。
⚠️ 没有门禁的风险: 新版本可能存在性能退化、数据库兼容性问题、监控指标异常、安全漏洞等隐患。直接切换流量可能导致大规模服务中断或数据损坏。
门禁机制通常包含以下校验维度:
- 健康检查门禁: 绿环境所有 Pod 的 Readiness Probe 和 Liveness Probe 必须持续通过。
- 性能基线门禁: 新版本的 P99 延迟、吞吐量、错误率等关键指标必须满足预设阈值。
- 集成测试门禁: 自动化端到端测试、契约测试、回归测试必须全部通过。
- 安全扫描门禁: 容器镜像和依赖库必须通过漏洞扫描,无高危 CVE。
- 人工审批门禁: 对于重大变更,需要指定负责人手动确认放行。
| 门禁类型 | 校验内容 | 失败后果 | 自动化程度 |
|---|---|---|---|
| 健康检查 | Pod 状态、就绪探针 | 流量切换后立即出现 502/503 | 完全自动化 |
| 性能基线 | 延迟、吞吐量、错误率 | 用户体验下降,SLA 违约 | 完全自动化 |
| 集成测试 | API 兼容性、业务流程 | 功能异常,数据不一致 | 完全自动化 |
| 安全扫描 | CVE 漏洞、合规检查 | 安全事件,合规风险 | 完全自动化 |
| 人工审批 | 变更影响评估 | 未经授权的变更上线 | 半自动化 |
1.3 Kubernetes 流量切换的核心挑战
在 Kubernetes 环境中实现蓝绿发布的流量切换,远比传统虚拟机环境复杂。Kubernetes 的 Service、Ingress、EndpointSlice 等组件构成了多层流量转发路径,每一层都可能引入切换延迟或流量损失。
💡 核心洞察: 蓝绿发布在 Kubernetes 中的流量切换并非简单的“开关切换”,而是一个涉及连接管理、缓存一致性、规则传播、会话保持和回滚策略的复杂系统工程。门禁机制正是为了在这些挑战面前提供一道安全防线。
1.4 本课程的核心目标
本课程将系统性地讲解如何在 Kubernetes 中构建一个具备门禁机制的蓝绿发布流量切换系统。你将学习到:
- 流量切换的底层原理: 深入理解 Kubernetes Service、EndpointSlice、kube-proxy、Ingress Controller 的流量转发机制。
- 门禁系统的设计与实现: 从健康检查、性能基线、集成测试到人工审批,构建完整的门禁流水线。
- 生产级流量切换策略: 包括连接耗尽、优雅关闭、灰度比例控制、Session Affinity 处理等高级话题。
- 可观测性与故障恢复: 通过监控、日志、追踪等手段实时感知切换状态,并制定快速回滚方案。
课程产出: 一套可落地的、基于 Kubernetes 原生资源与自定义控制器(Operator)的蓝绿发布门禁系统,附带完整的 CI/CD 集成方案。