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插件负责实现上述模型,其典型工作流程如下:

  1. 容器运行时调用CNI插件(如Calico、Flannel、Cilium)。
  2. CNI插件分配IP地址并配置网络接口(veth pair、macvlan等)。
  3. CNI插件配置路由规则与网络策略(NetworkPolicy)。
  4. 返回网络配置结果给容器运行时。

主流CNI插件对比:

插件 数据平面 网络策略支持 性能特点 典型场景
Calico eBPF / iptables 原生支持(丰富) 高吞吐、低延迟 大规模生产、安全敏感
Cilium eBPF 原生支持(L3-L7) 极高性能、可观测性强 云原生、服务网格集成
Flannel VXLAN / host-gw 需额外组件 简单易用、性能中等 小型集群、快速部署
Weave VXLAN / fastdp 原生支持 加密通信、跨云 多云、混合云
CNI插件工作流程与蓝绿发布网络准入关系 容器运行时 CNI插件 网络策略引擎 调用插件 策略检查 蓝环境(当前版本) Pod IP: 10.0.1.0/24 Service: app-blue 绿环境(新版本) Pod IP: 10.0.2.0/24 Service: app-green 网络准入控制:基于CNI策略的流量隔离与切换 CNI网络策略是实现蓝绿环境间网络隔离与流量准入控制的关键基础设施

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-4章 核心篇 第5-12章 进阶篇 第13-20章 可观测篇 第21-26章 实战篇 第27-30章 学习建议 1. 每阶段完成后完成对应实验,确保理论与实践结合。 2. 核心篇与进阶篇是课程重点,建议投入更多时间。 3. 实战篇将综合前四阶段知识,完成一个完整项目。

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