1. 课程导论与目标

1.1 策略即代码(Policy as Code)的定义

策略即代码(Policy as Code,简称 PaC)是一种将组织中的策略规则(如安全合规、资源限制、成本控制)以机器可读的代码形式进行声明、存储、执行和审计的实践方法。它借鉴了基础设施即代码(IaC)的核心理念,将原本分散在文档、人工审批流程或硬编码中的策略,转化为版本化、可测试、可自动执行的代码资产。

核心转变: 从“人工检查 + 事后补救” → “代码定义 + 事前/事中自动拦截”。

策略即代码的关键特征包括:

  • 声明式定义: 策略描述“应该是什么状态”,而非“如何实现”。
  • 版本控制: 策略代码与应用程序代码一样,存储在 Git 等仓库中,支持变更追踪、回滚和协作。
  • 自动化执行: 在 CI/CD 管道、基础设施部署或运行时环境中自动评估策略。
  • 可测试性: 可以编写单元测试和集成测试来验证策略逻辑的正确性。
  • 可审计性: 所有策略的变更历史和执行结果均可追溯。

1.2 资源配额模型的核心概念

资源配额模型是策略即代码在云原生环境中的一个典型应用场景。它定义了在多租户或多团队共享的云基础设施中,如何通过策略来限制和管理计算、存储、网络等资源的分配上限,防止资源争抢和成本失控。

核心概念包括:

概念 说明 示例(Kubernetes 环境)
配额(Quota) 对某一类资源在特定范围(如命名空间、项目、账号)内设置的最大可用量。 命名空间 A 最多使用 10 个 Pod、20 个 Service。
限制范围(Limit Range) 对单个工作负载或容器的资源请求(Request)和限制(Limit)设置最小/最大值。 单个容器 CPU 请求不能低于 0.1 核,不能高于 4 核。
准入控制(Admission Control) 在资源创建或更新请求持久化之前,由策略引擎拦截并评估的策略执行点。 Kubernetes 的 ValidatingAdmissionWebhook。
策略引擎(Policy Engine) 负责解析策略代码、接收请求上下文、执行规则评估并返回决策结果的组件。 Open Policy Agent (OPA)、Kyverno。
合规报告(Compliance Report) 对现有资源进行扫描,生成与策略规则对比的审计结果,展示合规与违规项。 OPA 的 Conftest 扫描结果、Kyverno 的 ClusterPolicyReport。
关键区别: 配额(Quota)是“总量控制”,限制范围(Limit Range)是“单体控制”。两者通常配合使用,形成双层防护。

1.3 策略即代码与资源配额模型的关系

资源配额模型是策略即代码的一个具体实现领域。策略即代码提供了通用的框架和工具(如 OPA、Kyverno、Sentinel),而资源配额模型则是利用这些工具来定义和执行与资源分配相关的策略规则。下图展示了从策略定义到执行的核心流程:

策略即代码 + 资源配额模型核心流程 策略代码定义 Rego / YAML / HCL 版本控制仓库 Git (GitHub / GitLab) CI/CD 管道 策略测试 + 部署 策略引擎 OPA / Kyverno / Sentinel 输入数据 资源请求 / 集群状态 / 用户属性 策略执行点 准入控制(Admission Controller) / 定时扫描(Audit) 说明:策略代码经过版本控制和 CI/CD 管道部署到策略引擎,引擎结合输入数据在准入或审计阶段执行决策

1.4 本课程的学习目标

完成本课程后,学员将能够:

  1. 理解并设计基于策略即代码的资源配额模型,涵盖配额、限制范围、优先级等核心要素。
  2. 搭建一套完整的测试验证环境,包含 Kubernetes 集群、策略引擎(OPA/Kyverno)和模拟工作负载。
  3. 编写策略代码(Rego / YAML),实现 CPU、内存、存储、Pod 数量等资源的配额控制。
  4. 执行策略测试,包括单元测试、集成测试和合规扫描,并解读测试报告。
  5. 集成策略验证到 CI/CD 管道(如 GitHub Actions),实现“左移”策略检查。
  6. 排查策略执行中的常见问题,如策略冲突、数据缺失、性能瓶颈。

1.5 前置知识要求

知识领域 要求 说明
容器与 Kubernetes 基础 了解 Pod、Deployment、Namespace、ResourceQuota、LimitRange 等基本概念。
命令行与脚本 基础 能使用 kubectl、bash 命令,理解 YAML/JSON 格式。
Git 与 CI/CD 入门 了解 Git 基本操作(clone、commit、push)和 CI 管道概念。
编程思维 基础 理解条件判断、循环、函数等逻辑结构,便于学习 Rego 策略语言。
注意: 本课程不从头教授 Kubernetes 或容器基础。如果你对上述前置知识完全陌生,建议先完成一门 Kubernetes 入门课程再开始本课程的学习。

1.6 课程内容概览

本课程共分为 30 章,按以下阶段组织:

  • 阶段一(第 1-5 章): 概念与基础环境搭建 —— 理解 PaC 与配额模型,部署测试集群和策略引擎。
  • 阶段二(第 6-15 章): 策略编写与测试 —— 从简单配额策略到复杂多条件策略,编写并运行测试。
  • 阶段三(第 16-22 章): CI/CD 集成与自动化 —— 将策略验证嵌入管道,实现自动拦截与报告。
  • 阶段四(第 23-27 章): 高级场景与排错 —— 多集群策略管理、性能优化、常见问题排查。
  • 阶段五(第 28-30 章): 综合实战与总结 —— 模拟真实业务场景,完成端到端配额模型验证。