1. 课程导论:什么是策略即代码(Policy as Code),为什么需要将 Rego 与 Helm 集成,课程目标与前置知识
1.1 什么是策略即代码(Policy as Code)
策略即代码(Policy as Code, PaC)是一种将组织中的安全、合规、治理规则以机器可读的代码形式进行声明、存储、测试和自动执行的实践。它打破了传统策略依赖 PDF 文档、人工审核或硬编码在应用逻辑中的模式,将策略从“静态文档”转变为“可执行代码”。
在云原生生态中,策略即代码通常通过专用的策略引擎实现。OPA(Open Policy Agent)是目前最流行的开源通用策略引擎,而 Rego 是 OPA 的原生声明式查询语言。Rego 允许你以 JSON 文档(如 Kubernetes 资源清单)作为输入,输出策略决策(Allow/Deny 或更复杂的结构化数据)。
1.2 为什么需要将 Rego 与 Helm 集成
Helm 是 Kubernetes 生态中最广泛使用的包管理器,通过 Chart 模板化应用部署。然而,Helm 本身不提供策略执行能力。当团队大规模使用 Helm 部署应用时,会面临以下核心痛点:
| 痛点 | 传统做法 | 问题 |
|---|---|---|
| 安全基线缺失 | 在 values.yaml 中手动注释或依赖外部文档 | 容易遗漏,无法在部署前自动拦截不安全配置(如 privileged: true) |
| 合规碎片化 | 部署后通过外部扫描工具检查 | 反馈周期长,无法在 Helm install/upgrade 时即时阻断 |
| 策略与模板耦合 | 在 Chart 模板中写大量 if-else 逻辑 | 模板臃肿,难以维护,策略变更需要重新发布 Chart |
| 多环境策略不一致 | 不同环境使用不同的 values 文件 | 策略逻辑分散,难以统一审计和版本控制 |
将 Rego 与 Helm 集成,意味着在 Helm 的生命周期中嵌入策略引擎。具体来说,可以在 helm template 或 helm install 阶段,通过 OPA 对渲染后的 Kubernetes 清单执行 Rego 规则,实现“部署即合规”。
1.3 集成架构概览
下图展示了 Rego 规则与 Helm Chart 集成的核心架构。策略规则作为独立层,在 Helm 渲染出 Kubernetes 清单后、实际应用到集群前,由 OPA 引擎进行校验。
1.4 课程目标
完成本课程后,你将具备以下能力:
- 理解核心概念: 掌握 Rego 语言基础、OPA 架构、Helm Chart 生命周期及钩子机制。
- 编写可复用的 Rego 规则: 针对 Kubernetes 资源(Pod、Deployment、Service、NetworkPolicy 等)编写安全与合规策略。
- 实现 Helm 与 OPA 的深度集成: 通过 Helm 插件、Chart 钩子、CI/CD 流水线等方式,在部署时自动执行策略检查。
- 构建策略即代码工作流: 将 Rego 规则纳入 Git 版本控制,实现策略的测试、发布和审计。
- 实战落地: 完成一个完整的集成项目,包含自定义 Chart、Rego 规则集、测试用例和部署流水线。
1.5 前置知识要求
为了获得最佳学习体验,建议你具备以下基础:
| 领域 | 具体要求 | 推荐程度 |
|---|---|---|
| Kubernetes | 了解 Pod、Deployment、Service 等核心资源;熟悉 kubectl 基本操作 | 必须 |
| Helm | 掌握 helm install/upgrade/template 命令;理解 values.yaml 和模板语法 | 必须 |
| YAML/JSON | 熟练读写 YAML 和 JSON 格式 | 必须 |
| 基础编程概念 | 理解变量、条件、循环、函数等通用编程概念 | 建议 |
| CI/CD 基础 | 了解 Git、流水线、自动化测试的基本思想 | 加分项 |
1.6 课程内容概览
本课程共分为 30 章,覆盖从基础到实战的完整路径。下图展示了课程的知识体系结构:
课程从基础概念出发,逐步深入到集成实现,最终通过完整项目交付可落地的策略即代码解决方案。每一章都包含可运行的代码示例和配套练习。