1. 课程导论:蓝绿发布概念、CNI网络基础、课程目标与学习路径
1.1 蓝绿发布:从概念到价值
蓝绿发布(Blue-Green Deployment)是一种零停机或近零停机的应用发布策略。其核心思想是维护两套完全独立的生产环境——蓝环境(当前运行稳定版本)与绿环境(待发布新版本),通过流量切换实现版本更新。
关键特征: 两套环境、瞬时切换、快速回滚、版本隔离。
与传统滚动更新相比,蓝绿发布在回滚速度与风险控制上具有显著优势。下表对比了三种常见发布策略的核心差异:
| 特性 | 蓝绿发布 | 滚动更新 | 金丝雀发布 |
|---|---|---|---|
| 回滚速度 | 秒级(流量切换) | 分钟级(逐Pod回滚) | 分钟级(调整权重) |
| 资源占用 | 高(双倍环境) | 低(增量资源) | 中(部分额外资源) |
| 流量切换粒度 | 全量/按比例 | 逐Pod | 按权重百分比 |
| 版本隔离性 | 完全隔离 | 部分共存 | 部分共存 |
| 适用场景 | 核心服务、数据库迁移 | 无状态微服务 | 灰度验证、A/B测试 |
实践提示: 蓝绿发布并非银弹。当新版本引入数据库Schema变更或协议不兼容时,单纯的流量切换可能无法保证回滚安全,这正是本课程引入CNI网络准入控制的核心原因。
1.2 CNI网络基础:Kubernetes网络模型与插件架构
CNI(Container Network Interface)是Kubernetes网络插件的标准接口。它定义了容器运行时如何配置网络、分配IP地址以及管理网络策略。理解CNI是设计蓝绿发布网络准入控制的前提。
Kubernetes网络模型遵循三个基本原则:
- Pod间无需NAT直接通信:每个Pod拥有独立IP,所有Pod之间可以直接通信。
- Node与Pod间无需NAT直接通信:节点上的进程可以直接访问PodIP。
- Pod内部容器共享网络命名空间:同一Pod内的容器通过localhost通信。
CNI插件负责实现上述模型,其典型工作流程如下:
- 容器运行时调用CNI插件(如Calico、Flannel、Cilium)。
- CNI插件分配IP地址并配置网络接口(veth pair、macvlan等)。
- CNI插件配置路由规则与网络策略(NetworkPolicy)。
- 返回网络配置结果给容器运行时。
主流CNI插件对比:
| 插件 | 数据平面 | 网络策略支持 | 性能特点 | 典型场景 |
|---|---|---|---|---|
| Calico | eBPF / iptables | 原生支持(丰富) | 高吞吐、低延迟 | 大规模生产、安全敏感 |
| Cilium | eBPF | 原生支持(L3-L7) | 极高性能、可观测性强 | 云原生、服务网格集成 |
| Flannel | VXLAN / host-gw | 需额外组件 | 简单易用、性能中等 | 小型集群、快速部署 |
| Weave | VXLAN / fastdp | 原生支持 | 加密通信、跨云 | 多云、混合云 |
1.3 课程目标:构建生产级的蓝绿发布网络准入与回滚体系
本课程旨在帮助学员掌握如何利用CNI网络能力,设计并实现一套安全、可控、可观测的蓝绿发布网络准入控制与回滚方案。具体目标如下:
- 理解核心原理:深入掌握CNI网络策略(NetworkPolicy)的工作机制,以及如何将其应用于蓝绿环境隔离。
- 设计准入控制:基于CNI插件(以Calico/Cilium为例),设计细粒度的网络准入规则,实现蓝绿环境间的流量精确控制。
- 实现快速回滚:利用网络策略的即时生效特性,设计秒级回滚机制,确保发布异常时能迅速恢复。
- 构建可观测性:集成网络流量监控与日志,实现发布过程的实时可视化与故障定位。
- 落地生产实践:通过完整案例与代码实现,将理论转化为可复用的生产级方案。
重要提醒: 本课程不讨论应用层(如服务网格)的流量管理,而是聚焦于网络层(L3/L4)的准入控制。两者互补,但本课程专注于CNI提供的底层网络能力。
1.4 学习路径:从基础到实战的阶梯式设计
课程分为五个阶段,循序渐进:
| 阶段 | 章节范围 | 核心内容 | 实践产出 |
|---|---|---|---|
| 基础篇 | 第1-4章 | CNI原理、NetworkPolicy语法、蓝绿发布设计模式 | 搭建实验环境,编写基础网络策略 |
| 核心篇 | 第5-12章 | 准入控制规则设计、动态策略切换、回滚机制 | 实现蓝绿环境网络隔离与流量切换 |
| 进阶篇 | 第13-20章 | 多集群场景、大规模集群优化、安全加固 | 构建跨集群蓝绿发布网络方案 |
| 可观测篇 | 第21-26章 | 流量监控、日志采集、告警与Dashboard | 集成Prometheus/Grafana监控网络策略 |
| 实战篇 | 第27-30章 | 完整项目实战、故障演练、总结与展望 | 交付生产级蓝绿发布网络准入系统 |
1.5 前置知识与环境准备
为获得最佳学习体验,建议学员具备以下基础:
- 熟悉Kubernetes基本概念(Pod、Service、Deployment、Namespace)。
- 了解Linux网络基础(veth pair、iptables、路由)。
- 具备基本的YAML编写与kubectl操作能力。
课程实验环境推荐配置:
| 组件 | 版本要求 | 说明 |
|---|---|---|
| Kubernetes集群 | v1.24+ | 建议使用Kind或kubeadm搭建 |
| CNI插件 | Calico v3.25+ 或 Cilium v1.12+ | 课程以Calico为主,Cilium为辅 |
| kubectl | 与集群版本匹配 | 必备命令行工具 |
| 网络策略工具 | calicoctl / cilium-cli | 用于高级策略管理 |
快速开始: 如果你还没有实验环境,推荐使用以下命令在5分钟内搭建一个包含Calico的Kind集群:
# 创建Kind配置文件
cat <<EOF | kind create cluster --config=-
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
networking:
disableDefaultCNI: true
nodes:
- role: control-plane
- role: worker
EOF
# 安装Calico
kubectl apply -f https://raw.githubusercontent.com/projectcalico/calico/v3.25/manifests/calico.yaml