1. 课程导论:什么是准入控制、为什么需要策略即代码、资源配额模型的核心价值

1.1 什么是准入控制(Admission Control)

在 Kubernetes 集群中,准入控制是 API Server 请求处理链路上的一个关键拦截阶段。它位于请求认证(Authentication)与授权(Authorization)之后,对象持久化(etcd 存储)之前。准入控制器(Admission Controller)是一段拦截并处理 API 请求的插件代码,能够对请求进行验证(Validating)或修改(Mutating)。

核心定位:准入控制是集群安全策略的最后一道程序化防线。一旦请求通过准入控制,将被持久化到 etcd 并生效。

准入控制器分为两类:

类型 执行顺序 行为 典型场景
Mutating(变更) 先执行 允许修改请求对象(如注入 Sidecar、设置默认值) 自动注入 Istio Sidecar、设置资源默认 Limit
Validating(验证) 后执行 仅验证请求对象是否符合策略,拒绝不合规请求 检查镜像来源、禁止特权容器、验证资源配额

Kubernetes 内置了数十个准入控制器(如 NamespaceLifecycle、ResourceQuota、PodSecurity),但内置控制器的策略逻辑是固定的,难以灵活扩展。这正是策略即代码(Policy as Code)的切入点。

Kubernetes API 请求处理链路(准入控制位置) 客户端请求 认证 授权 准入控制 etcd 持久化 Mutating Validating 准入控制是策略执行的“最后一公里” 请求通过认证与授权后,仍可能被准入控制器拒绝或修改。策略即代码在此处动态注入自定义规则。

1.2 为什么需要策略即代码(Policy as Code)

传统策略管理方式(如人工审核、静态配置文件、脚本检查)存在明显缺陷:

  • 手动操作易出错:运维人员通过 SSH 或 Dashboard 手动配置策略,缺乏版本控制与审计。
  • 策略分散难审计:安全基线、资源限制、合规要求散落在不同文档、脚本或人脑中。
  • 变更周期长:修改策略需要提交工单、人工审批、手动部署,无法快速响应安全事件。
  • 缺乏自动化测试:策略上线前无法模拟验证,容易引发生产故障。

策略即代码将策略声明为机器可读的代码文件(如 YAML、Rego、JSON),纳入 Git 版本管理,通过 CI/CD 管道自动测试与部署。其核心优势包括:

维度 传统策略管理 策略即代码
版本控制 无或依赖文档版本 Git 全量历史追溯
自动化执行 手动触发或定时脚本 事件驱动(Admission Webhook)
测试能力 难以模拟 单元测试 + 集成测试
审计合规 日志分散,追溯困难 策略即证据,可签名可验证
变更速度 天级 分钟级(PR 合并即生效)
行业实践:Open Policy Agent(OPA)与 Kyverno 是 Kubernetes 生态中最主流的策略即代码引擎。OPA 使用 Rego 语言声明策略,Kyverno 使用 Kubernetes 原生 YAML 资源定义策略,两者均以 Admission Webhook 方式集成。

1.3 资源配额模型的核心价值

资源配额(Resource Quota)是 Kubernetes 内置的命名空间级资源管控机制,用于限制命名空间内所有 Pod 的 CPU、内存、存储等资源总量。然而,原生 ResourceQuota 存在以下局限:

  • 静态配置:配额值在创建时固定,无法根据集群负载或业务优先级动态调整。
  • 缺乏分层:无法定义“部门 → 项目 → 应用”的多级配额树。
  • 无策略联动:无法与安全策略(如禁止特权容器)或合规策略(如镜像必须来自私有仓库)组合执行。
  • 审计不足:配额变更无审批流,超配行为难以追溯。

本课程提出的基于准入控制的策略即代码资源配额模型,将资源配额从静态配置升级为动态、可编程、可审计的策略体系。其核心价值体现在:

  1. 动态配额分配:通过策略引擎实时计算可用配额,支持按优先级、按时间段、按业务标签动态调整。
  2. 多级配额树:支持组织层级(Org → Team → Project → App)的配额继承与覆盖。
  3. 策略组合执行:资源配额策略可与安全策略、合规策略在同一 Admission Webhook 中联合判定。
  4. 全链路审计:每次配额分配与变更均记录策略决策日志,支持合规追溯。
  5. 声明式 GitOps:配额策略以代码形式存储在 Git 仓库,通过 Pull Request 驱动变更,自动测试与部署。
策略即代码资源配额模型架构(核心价值示意) 策略代码仓库 (Git + Rego/YAML) 集群资源状态 (实时用量/剩余) 策略引擎 OPA / Kyverno Admission Webhook 实时决策 动态配额分配 (允许/拒绝/降级) 全链路审计日志 (决策记录 + 合规报告) 核心价值闭环 策略代码 + 集群状态 → 策略引擎实时决策 → 动态配额分配 + 全链路审计 → 反馈优化策略代码
注意:本课程不讨论原生 ResourceQuota 的简单用法,而是聚焦于如何通过策略即代码引擎(OPA/Kyverno)构建可编程、可测试、可审计的资源配额模型。你需要具备 Kubernetes 基础操作能力与 YAML 编写经验。

1.4 本章小结