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 在云原生生态中的核心位置:

OPA Gatekeeper 在云原生生态中的定位 Kubernetes 集群(API Server + etcd) 资源创建/更新请求 → 准入 Webhook 拦截 OPA Gatekeeper • 准入 Webhook(ValidatingAdmissionPolicy) • ConstraintTemplate + Constraint CRD • Rego 策略引擎(OPA 核心) 安全合规 • CIS Benchmark • Pod 安全标准 • 镜像签名验证 容量规划 • 资源配额限制 • 节点亲和性约束 • 成本标签强制 运维治理 • 命名空间隔离 • 部署策略校验 • 审计日志 说明 Gatekeeper 作为 K8s 与 OPA 之间的 策略执行桥梁

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 的核心原理与工程实践,重点聚焦集群容量规划场景。完成本课程后,学员将能够:

  1. 理解 Gatekeeper 架构:掌握 ConstraintTemplate、Constraint、Rego 策略三要素的协作机制。
  2. 编写 Rego 策略:从基础语法到高级模式,覆盖资源配额、标签强制、镜像来源校验等容量规划场景。
  3. 部署与管理 Gatekeeper:使用 Helm 安装、配置 Webhook、管理策略生命周期。
  4. 实现容量规划策略:限制命名空间资源上限、强制节点选择器、校验存储类、审计资源使用趋势。
  5. 集成 CI/CD 与 GitOps:将策略作为代码纳入流水线,实现合规左移。
  6. 故障排查与优化:分析 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-8 章 架构与 Rego 基础 ConstraintTemplate 策略部署与测试 容量规划篇 第 9-18 章 资源配额与限制 节点选择器强制 标签与成本审计 进阶篇 第 19-25 章 多集群与 GitOps 性能优化 审计与合规报告 实战篇 第 26-30 章 企业级案例 故障排查手册 最佳实践总结 学习路径建议 按顺序学习,每章完成后完成配套实验,确保理论与实践结合 总时长:约 30 小时(含实验) | 难度:中级 → 高级 | 适合:K8s 管理员 / 平台工程师 / SRE

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