1. 课程导论:OPA Gatekeeper 在云原生生态中的定位、与原生RBAC/PSP/NetworkPolicy的区别、课程目标与前置知识要求
1.1 云原生安全策略的演进与痛点
Kubernetes 已成为容器编排的事实标准,但随着集群规模扩大与多租户场景普及,策略即代码(Policy as Code) 的需求日益迫切。传统基于角色的访问控制(RBAC)、Pod 安全策略(PSP,已弃用)以及网络策略(NetworkPolicy)虽然覆盖了部分场景,但在动态、声明式的云原生环境中存在明显短板:
- 策略分散:RBAC 管权限、PSP 管 Pod 安全、NetworkPolicy 管网段,缺乏统一的策略描述语言。
- 缺乏准入控制:RBAC 和 NetworkPolicy 无法在资源创建时进行校验,PSP 虽能拦截但已被弃用且功能有限。
- 难以扩展:原生策略无法覆盖自定义资源(CRD)、镜像签名验证、成本配额等高级场景。
- 审计与合规缺失:原生机制缺少对历史变更的审计追踪和合规报告能力。
课程提示: 本课程将聚焦 OPA Gatekeeper——CNCF 毕业项目,它通过声明式策略语言 Rego 和准入 Webhook 机制,填补了 Kubernetes 原生策略的空白,成为云原生策略引擎的事实标准。
1.2 OPA Gatekeeper 在云原生生态中的定位
OPA(Open Policy Agent)是一个通用的策略引擎,而 Gatekeeper 是其 Kubernetes 专属集成组件。下图展示了 Gatekeeper 在云原生生态中的核心位置:
1.3 与原生策略机制的对比
下表从多个维度对比 Kubernetes 原生策略机制与 OPA Gatekeeper 的差异:
| 对比维度 | RBAC | PSP(已弃用) | NetworkPolicy | OPA Gatekeeper |
|---|---|---|---|---|
| 策略语言 | YAML 角色/绑定 | YAML 策略定义 | YAML 网络规则 | Rego(声明式查询语言) |
| 作用范围 | 用户/服务账户权限 | Pod 安全上下文 | Pod 网络流量 | 所有 API 资源(含 CRD) |
| 准入控制 | 否(仅授权) | 是(Mutating + Validating) | 否(仅运行时) | 是(ValidatingAdmissionPolicy) |
| 自定义扩展 | 有限(Aggregation) | 不支持 | 不支持 | 支持 ConstraintTemplate + CRD |
| 审计能力 | 无 | 无 | 无 | 支持审计日志与合规报告 |
| 多集群管理 | 需手动同步 | 需手动同步 | 需手动同步 | 支持 GitOps 分发 |
| 社区生态 | Kubernetes 原生 | 已弃用 | Kubernetes 原生 | CNCF 毕业 + 丰富策略库 |
注意: Kubernetes v1.25 起默认移除 PSP,官方推荐迁移至 OPA Gatekeeper 或 Kyverno。本课程选择 Gatekeeper 是因为其 Rego 语言通用性更强,且与 OPA 生态无缝衔接,适合企业级策略治理。
1.4 课程目标
本课程旨在帮助学员掌握 OPA Gatekeeper 的核心原理与工程实践,重点聚焦集群容量规划场景。完成本课程后,学员将能够:
- 理解 Gatekeeper 架构:掌握 ConstraintTemplate、Constraint、Rego 策略三要素的协作机制。
- 编写 Rego 策略:从基础语法到高级模式,覆盖资源配额、标签强制、镜像来源校验等容量规划场景。
- 部署与管理 Gatekeeper:使用 Helm 安装、配置 Webhook、管理策略生命周期。
- 实现容量规划策略:限制命名空间资源上限、强制节点选择器、校验存储类、审计资源使用趋势。
- 集成 CI/CD 与 GitOps:将策略作为代码纳入流水线,实现合规左移。
- 故障排查与优化:分析 Webhook 超时、策略冲突、性能瓶颈等生产问题。
1.5 前置知识要求
为获得最佳学习体验,建议学员具备以下基础:
| 领域 | 具体要求 | 推荐学习资源 |
|---|---|---|
| Kubernetes 基础 | 熟悉 Pod、Deployment、Namespace、RBAC、ConfigMap 等核心资源;了解 kubectl 常用命令 | Kubernetes 官方文档 / CKA 课程 |
| 容器与 YAML | 理解容器镜像、Dockerfile 基础;能编写 Kubernetes 资源 YAML 清单 | Docker 入门教程 |
| 编程思维 | 了解声明式编程概念(如 SQL、Prolog 或函数式语言)有助于理解 Rego | Rego 官方 Playground 体验 |
| Linux 基础 | 能使用命令行、编辑文件、理解进程与权限概念 | Linux 基础教程 |
课程特色: 本课程不要求学员预先精通 Rego 语言。我们将从零开始,通过容量规划这一具体场景逐步深入,每章配有可运行的示例代码和实验环境说明。
1.6 课程内容概览
本课程共 30 章,分为四个阶段:
- 基础篇(第 1-8 章):Gatekeeper 架构、Rego 语法入门、ConstraintTemplate 编写、策略部署与测试。
- 容量规划篇(第 9-18 章):资源配额策略、节点选择器强制、存储类校验、标签审计、成本标签强制、命名空间资源上限、Pod 优先级与抢占策略。
- 进阶篇(第 19-25 章):多集群策略分发、GitOps 集成、策略性能优化、审计日志与合规报告、自定义数据注入。
- 实战篇(第 26-30 章):企业级案例——金融级安全策略、大规模集群容量规划、故障排查手册、课程总结与最佳实践。
下图展示了课程的知识体系结构:
1.7 实验环境说明
本课程所有示例均在以下环境中验证通过:
- Kubernetes 版本:v1.28+(支持 ValidatingAdmissionPolicy 特性门控)
- Gatekeeper 版本:v3.14+(最新稳定版)
- OPA 版本:v0.58+(内置 Rego 语法)
- 推荐工具:kubectl、helm、kind(本地测试集群)、VS Code + Rego 插件
快速开始: 使用以下命令可在一分钟内启动本地测试环境:
# 创建 kind 集群
kind create cluster --name gatekeeper-demo
# 安装 Gatekeeper
helm repo add gatekeeper https://open-policy-agent.github.io/gatekeeper/charts
helm install gatekeeper/gatekeeper --name-template=gatekeeper --namespace=gatekeeper-system --create-namespace
# 验证安装
kubectl get pods -n gatekeeper-system