1. 课程导论:Envoy扩展过滤器与策略即代码资源配额模型集成案例
1.1 核心概念:Envoy扩展过滤器
Envoy 代理的核心设计哲学是“可编程的数据平面”。其 L4/L7 过滤器链(Filter Chain) 机制允许开发者在不修改 Envoy 核心代码的前提下,插入自定义的网络流量处理逻辑。本课程聚焦于 HTTP 过滤器扩展,通过编写 Wasm 或 Lua 扩展,在请求/响应路径上执行策略决策。
关键术语: 过滤器(Filter)、过滤器链(Filter Chain)、Wasm 扩展、Lua 扩展、解码器/编码器回调。
1.2 核心概念:策略即代码(Policy as Code)
策略即代码(PaC)将基础设施和应用程序的治理规则从人工审批或静态配置文件,转变为可版本控制、可自动化测试、可审计的代码。在云原生网关场景中,PaC 意味着将速率限制、配额检查、访问控制等策略,以声明式或可编程的方式嵌入到 Envoy 的请求处理流程中。
| 传统策略管理 | 策略即代码(PaC) |
|---|---|
| 人工编辑 YAML/JSON 配置文件 | 使用高级语言(Rego, CUE)编写策略 |
| 策略变更依赖重启或热加载 | 策略变更实时生效,支持 A/B 测试 |
| 缺乏单元测试和版本控制 | 策略代码纳入 Git 仓库,支持 CI/CD |
| 审计困难,依赖日志回溯 | 策略执行结果可结构化记录,支持审计 |
1.3 资源配额模型(Resource Quota Model)的演进
资源配额模型经历了从“静态硬限制”到“动态、多维、可协商”的演进过程。本课程将重点介绍一种适用于微服务网关的 分层配额模型,该模型能够同时处理全局配额、用户级配额和 API 级配额。
- 第一代:静态固定配额 —— 基于 IP 或 的固定速率限制,无法应对突发流量。
- 第二代:令牌桶/漏桶模型 —— 引入突发能力,但配额维度单一(仅限 QPS)。
- 第三代:多维资源配额模型 —— 同时限制 QPS、并发连接数、请求体大小、CPU 时间等。
- 第四代:策略驱动的动态配额模型 —— 配额规则由 PaC 引擎动态计算,支持基于上下文(时间、用户等级、服务健康度)的弹性调整。
课程聚焦: 本案例将实现第四代模型的核心子集——基于 Rego 策略的“请求体大小 + 并发请求数”联合配额检查。
1.4 本课程目标
完成本课程后,学员将能够:
- 理解 Envoy 扩展过滤器的生命周期和 Wasm 扩展开发流程。
- 掌握 使用 Rego 语言编写资源配额策略,并集成到 Envoy 的请求处理链中。
- 实现 一个完整的“请求体大小 + 并发请求数”联合配额检查过滤器。
- 部署 基于 Istio 的 Sidecar 模式,验证策略在真实微服务环境中的生效情况。
1.5 学习路径与章节结构
本课程共 30 章,分为四个阶段:
| 阶段 | 章节范围 | 核心内容 |
|---|---|---|
| 基础篇 | 第 1-8 章 | Envoy 过滤器原理、Wasm SDK 搭建、Rego 语法入门 |
| 核心实现篇 | 第 9-18 章 | 配额模型设计、过滤器状态管理、OPA 集成、并发控制 |
| 集成与部署篇 | 第 19-25 章 | Istio 环境配置、Sidecar 注入、策略热更新、监控与告警 |
| 进阶与实战篇 | 第 26-30 章 | 性能调优、多集群配额同步、故障注入测试、生产级最佳实践 |
前置要求: 建议学员具备基本的 Kubernetes 操作经验,了解 Envoy 代理的基本概念,并熟悉至少一种编程语言(Go 或 Rust 更佳)。
1.6 案例预期成果
通过本课程,你将构建一个完整的端到端系统:
- Envoy 扩展过滤器:一个基于 Wasm 的 HTTP 过滤器,负责拦截请求并调用策略引擎。
- Rego 策略库:包含资源配额定义、配额检查逻辑和超额处理规则。
- 配额状态管理:使用 Redis 或本地内存维护并发请求数和已消耗的请求体大小。
- Istio 集成:通过 EnvoyFilter CRD 将过滤器注入到 Istio 数据平面。
学习建议: 建议学员在本地搭建一个 Kind 或 Minikube 集群,并安装 Istio 1.18+ 版本,以便跟随课程进行实操练习。