Kyverno 通过 validate、mutate、generate 三类声明式策略,在 Kubernetes 准入阶段实现校验、修正与自动化资源生成,支持 GitOps、精准匹配、JMESPath 提取、条件注入及模板化配额/网络策略,并提供审计模式与 CLI 预验证。

Kyverno 通过声明式 YAML 策略,在 Kubernetes API 请求阶段自动执行资源校验、修正与生成,实现轻量、原生、可追溯的合规性治理。它不依赖额外编程语言或外部服务,所有策略即代码,直接纳入 GitOps 流水线。
用 validate 规则强制基础安全基线
验证类策略在资源创建或更新前拦截不合规操作,适用于 CIS、PCI-DSS 等标准落地。例如禁止特权容器、限制镜像标签、校验 Pod 安全上下文:
- 策略定义使用 validate.deny 或 validate.message 明确失败反馈,便于开发理解错误原因
- 匹配范围通过 match(必须满足)和 exclude(明确豁免)组合控制,避免误拦 CI/CD 工具命名空间等特例
- 支持 JMESPath 表达式提取请求字段,如
"{{ request.object.spec.containers[0].securityContext.runAsNonRoot }}",提升校验精度
用 mutate 规则统一注入合规配置
突变策略在准入阶段自动补全缺失字段,降低人工配置出错率。典型场景包括为所有 Pod 注入默认安全上下文、添加审计标签、设置资源限制注解:
评估 Kubernetes 集群安全态势,覆盖 RBAC、工作负载安全、网络策略、基础设施即代码(IaC)、运行时监控和密钥管理等 30 项控制项……
- 使用 mutate.patchStrategicMerge 可精准覆盖嵌套结构,比完整重写更安全
- 配合 preconditions 判断是否已存在某字段,避免重复注入(如仅当未设置
securityContext时才补全) - 支持 auto-gen for pod controllers,对 Deployment、StatefulSet 等控制器定义一次策略,Kyverno 自动适配其 Pod 模板
用 generate 规则自动化配额与网络策略
生成策略响应资源事件,按需创建配套对象,解决“命名空间一建,配额/网络策略就得手动跟上”的运维断点:
- 监听
Namespace创建事件,自动生成ResourceQuota和LimitRange,确保新环境默认受控 - 为特定标签的命名空间(如
env: prod)生成NetworkPolicy,隔离生产流量 - 生成内容支持模板变量,如
namespace: '{{request.object.metadata.name}}',保证上下文准确
策略生命周期管理要点
策略本身是 Kubernetes 资源,应像应用一样版本化、测试、灰度发布:
- 用 ClusterPolicy 管理集群级规则,用 Policy 限定命名空间作用域,权限更精细
- 启用 validationFailureAction: Audit 先观察策略影响,确认无误后再切为 Enforce
- 结合 Kyverno 的
kyverno applyCLI 工具,在 CI 阶段离线验证策略语法与模拟效果,避免上线报错

















