1. 课程导论:Kyverno 策略迁移的背景与价值、课程目标与学习路径、前置知识要求
1.1 策略迁移的时代背景
Kubernetes 生态中,策略引擎已经从“可选组件”演变为“生产级安全基座”。OPA Gatekeeper 凭借其通用策略语言 Rego 和强大的约束框架,在过去几年中占据了主导地位。然而,随着云原生安全左移、GitOps 工作流普及以及平台工程对开发者体验的极致追求,Gatekeeper 的局限性逐渐显现:Rego 学习曲线陡峭、模板与约束分离导致运维复杂度高、调试困难。
Kyverno 作为 CNCF 毕业项目,以“Kubernetes 原生策略引擎”的定位迅速崛起。其核心优势在于:策略即 Kubernetes 资源(YAML 定义)、无需学习专用语言、支持 mutate/validate/generate 三种动作、原生集成镜像验证与 Pod 安全标准。据 CNCF 2024 年度调查,Kyverno 在生产环境中的采用率已超过 Gatekeeper,成为策略引擎的首选。
迁移驱动力总结: 降低策略编写门槛、减少运维心智负担、提升策略执行效率、统一策略管理平面。
1.2 迁移的核心挑战
从 Gatekeeper 迁移到 Kyverno 并非简单的“语法翻译”,而是策略范式的转换。下表对比了两者在关键维度上的差异:
| 对比维度 | OPA Gatekeeper | Kyverno |
|---|---|---|
| 策略定义语言 | Rego(声明式查询语言) | YAML(Kubernetes 原生资源) |
| 策略结构 | ConstraintTemplate + Constraint 分离 | ClusterPolicy / Policy 单一资源 |
| 动作类型 | validate(默认),mutate 需额外开发 | validate / mutate / generate 原生支持 |
| 上下文变量 | data.inventory 查询集群状态 | context 变量 + API 调用原生集成 |
| 调试方式 | Rego 单元测试 + 日志 | dry-run 模式 + 策略报告 + 可视化 |
| 社区生态 | 策略库分散,质量参差 | 官方策略库(~200+ 策略),持续更新 |
迁移误区警示: 不要试图将 Rego 逻辑逐行“翻译”为 Kyverno YAML。正确的做法是:理解 Gatekeeper 策略的意图,然后使用 Kyverno 的原生能力重新实现。本课程将贯穿这一核心理念。
1.3 课程目标与学习路径
本课程旨在培养学员具备以下能力:
- 策略迁移能力: 能够将现有 Gatekeeper 策略(包括 ConstraintTemplate 和 Constraint)系统性地迁移到 Kyverno ClusterPolicy。
- 模板生成能力: 掌握 Kyverno 策略模板的编写规范,能够根据业务需求快速生成可复用的策略模板。
- 核验联动能力: 建立迁移后的策略核验机制,确保迁移前后策略行为一致,并实现策略模板与核验工具的自动化联动。
- 双栈运维能力: 在迁移过渡期,能够同时管理 Gatekeeper 和 Kyverno 双栈环境,确保业务不中断。
课程学习路径分为四个阶段:
- 基础夯实(第 1-5 章): 理解迁移背景、Kyverno 核心概念、策略结构、匹配规则与动作类型。
- 迁移实战(第 6-15 章): 从简单 validate 策略到复杂 mutate/generate 策略,逐类完成 Gatekeeper 到 Kyverno 的迁移。
- 模板工程(第 16-22 章): 策略模板化设计、参数化、版本管理、CI/CD 集成。
- 核验与联动(第 23-30 章): 策略行为核验、自动化测试、策略报告、审计日志、双栈运维。
1.4 前置知识要求
为确保学习效果,学员应具备以下基础:
Kubernetes 基础
- 熟悉 Kubernetes 核心资源:Pod、Deployment、Service、Namespace、RBAC。
- 理解 Admission Controller 机制(MutatingWebhookConfiguration / ValidatingWebhookConfiguration)。
- 能够使用 kubectl 进行资源操作,理解 YAML 清单结构。
- 了解 Pod Security Standards(Privileged / Baseline / Restricted)。
OPA Gatekeeper 基础
- 理解 Gatekeeper 的架构:OPA 引擎 + Gatekeeper 控制器 + Webhook。
- 能够编写简单的 Rego 策略(至少包含 deny 规则和 violation 消息)。
- 熟悉 ConstraintTemplate 和 Constraint 的创建与部署流程。
- 了解 Gatekeeper 的约束框架(repetition、match、parameters)。
学习建议: 如果对 Gatekeeper 尚不熟悉,建议先完成 OPA Gatekeeper 官方入门教程(约 2 小时),再进入本课程。课程第 2 章会提供 Gatekeeper 策略的快速回顾,但不会从头教授 Rego 语法。
1.5 课程环境与工具链
本课程所有实验均在以下环境中验证:
| 组件 | 版本要求 | 说明 |
|---|---|---|
| Kubernetes 集群 | v1.28+ | 支持 ValidatingAdmissionPolicy 特性(可选) |
| Kyverno | v1.12+ | 推荐使用 Helm 安装,启用策略报告 |
| OPA Gatekeeper | v3.16+ | 用于迁移源环境搭建 |
| kubectl | v1.28+ | 与集群版本匹配 |
| kyverno CLI | v1.12+ | 用于本地策略测试与验证 |
课程提供的示例代码仓库包含:
gatekeeper-policies/— 原始 Gatekeeper 策略集合(含 ConstraintTemplate 和 Constraint)kyverno-policies/— 迁移后的 Kyverno ClusterPolicy 集合templates/— 策略模板生成器(Python + Jinja2)tests/— 核验脚本(基于 kyverno CLI 和 pytest)
# 克隆课程仓库
git clone https://github.com/example/kyverno-migration-course.git
cd kyverno-migration-course
# 查看目录结构
tree -L 2
1.6 本章小结
本章明确了 Kyverno 策略迁移的时代必然性、核心挑战以及本课程的系统化学习路径。学员应已了解:
- Gatekeeper 到 Kyverno 迁移的驱动力与价值
- 两者在策略定义、结构、动作类型上的关键差异
- 课程四阶段学习路径与交付物
- 前置知识要求与环境准备