Kyverno 是什么
Kubernetes 原生策略引擎:策略用 YAML 表达,不要求学习 Rego,支持校验(validate)、变更(mutate)、生成(generate)与镜像验证,并输出 PolicyReport 汇总资源合规状态。作为准入 webhook 在资源写入时拦截或改写,也能对存量资源做后台扫描生成报告。Audit 起步、Enforce 收敛是常见的落地节奏。
基本信息
| 能力 | validate、mutate、generate、verifyImages 等规则类型 |
|---|---|
| 报告 | PolicyReport 汇总资源合规状态,可对接仪表盘 |
| 适用 | 不引入 Rego 的团队,YAML 上手成本低 |
| 模式 | Audit 只记录,Enforce 直接拦截 |
| 位置 | 准入 webhook 与后台扫描两路互补 |
典型使用场景
- 标签强制:新资源必须带指定标签,缺失即处理
- 默认值注入:缺失的资源配额由 mutate 自动补齐
- 镜像校验:只允许受信仓库与签名的镜像
- 配套生成:新命名空间自动生成网络策略等资源
- 存量扫描:后台模式对既有资源输出合规报告
- 例外管理:豁免条件显式声明并可审计
样例
样例
apiVersion: kyverno.io/v1
kind: ClusterPolicy
metadata:
name: disallow-latest
spec:
validationFailureAction: Audit # Audit 只记录;Enforce 直接拦截
rules:
- name: require-tag
match:
any:
- resources:
kinds: ["Pod"]
validate:
message: "禁止使用 latest 标签"
pattern:
spec:
containers:
- image: "!*:latest"规则类型读法
| 类型 | 作用 | 注意 |
|---|---|---|
| validate | 校验字段,按模式处置 | Audit 记录、Enforce 拦截 |
| mutate | 写入前改写资源 | 变更要评审并告知 |
| generate | 生成配套资源 | 注意生成范围与权限 |
| verifyImages | 校验镜像签名 | 与签名体系配套 |
| PolicyReport | 合规状态汇总 | 接入仪表盘与告警 |
Audit 起步、Enforce 收敛:与发布团队同步收紧排期。
策略也进 Git:用 GitOps 管策略本身,才有审计轨迹与回滚能力。
例外显式化:豁免写成策略里的条件或注解,别用口头约定。
落地补充
- 发布前置校验:清单先过本地校验工具,问题在流水线阶段暴露
- 引擎升级:策略引擎自身升级先核对规则兼容性再推进
策略范围收窄:能用命名空间级就不上集群级,匹配范围写清减少误伤面。
报告对接仪表盘:合规率按团队维度展示,推动责任人主动治理。