宣布 Kyverno 1.17!
Source: CNCF Blog
发布于 2026 年 2 月 18 日
作者 Charles‑Edouard Breteche, Nirmata
CNCF 项目在本文中的亮点
Kyverno 1.17 是一个里程碑式的发布,标志着我们下一代 通用表达式语言 (CEL) 策略引擎的稳定化。
- 虽然 1.16 在 beta 阶段引入了 “CEL‑first” 的愿景,1.17 将这些能力提升至 v1,为策略即代码提供了高性能、面向未来的路径。
- 本次发布通过引入 命名空间级别的变更和生成、扩展用于复杂逻辑的函数库,以及通过即将推出的 Cosign v3 支持来增强供应链安全,完成了 CEL 策略的 “闭环”。
kyverno.io 的全新面貌
使用 1.17 时,你首先会注意到我们全新 redesign 的网站。我们已经从一个简单的文档站点升级为面向平台工程师的现代高性能门户。
说实话: Kyverno 网站的 redesign 早该进行。随着项目演进为统一策略即代码的行业标准,我们的文档也需要体现这种成熟度。我们很自豪终于在 上推出全新体验。

亮点
- 现代化 redesign – 基于 Starlight 框架构建,新站点更快、完全响应式,并拥有简洁、专业的美学,让长篇阅读更舒适。
- 增强的文档结构 – 我们从头重构了 docs。信息现在按 “用户旅程” 分层——从面向初学者的 快速入门 到面向高级策略作者的深度 参考 材料。
- 全新 redesign 的策略目录 – 我们的 300+ 条 sample policies 库拥有全新界面。它提供改进的过滤功能和专用搜索,让你可以立即按 类别(最佳实践、安全等)或 类型(CEL vs. JMESPath)查找策略。
- 增强的搜索能力 – 我们集成了更智能的搜索引擎,索引文档和策略代码,确保你第一次就能得到正确答案。
- 全新博客 – Kyverno blog 已焕然一新,更好地展示技术深度解析、社区案例研究以及本次发布等公告!
命名空间级别的变更和生成策略
在 1.16 中,我们为验证、清理和镜像验证引入了命名空间变体。
Kyverno 1.17 通过添加以下内容完成了此套体系:
NamespacedMutatingPolicyNamespacedGeneratingPolicy
它们实现了真正的 多租户:命名空间所有者现在可以定义自己的变更和生成逻辑(例如自动注入 sidecar 或创建默认 ConfigMap),而无需集群范围的权限,也不会影响其他租户。
CEL 策略类型达到 v1 (GA)
1.17 的标题是将基于 CEL 的策略类型提升至 v1。这意味着该 API 现已 稳定,可在生产环境中使用。
提升的类型
ValidatingPolicy&NamespacedValidatingPolicyMutatingPolicy&NamespacedMutatingPolicyGeneratingPolicy&NamespacedGeneratingPolicyImageValidatingPolicy&NamespacedImageValidatingPolicyDeletingPolicy&NamespacedDeletingPolicyPolicyException
随着这些类型的毕业,平台团队可以自信地从基于 JMESPath 的策略迁移到 CEL,以利用显著提升的评估性能以及更好地与上游 Kubernetes ValidatingAdmissionPolicies / MutatingAdmissionPolicies 对齐。
Source: …
新的 CEL 功能与函数
为了确保 CEL 策略与原始 Kyverno 引擎同样强大,1.17 引入了多个全新的函数库:
| 类别 | 函数 |
|---|---|
| 哈希函数 | md5(value), sha1(value), sha256(value) |
| 数学函数 | math.round(value, precision) – 将数字四舍五入到指定的小数位或整数位 |
| X509 解码 | x509.decode(pem) – 在 CEL 表达式中直接检查并验证 X.509 证书的内容 |
| 随机字符串生成 | random() – 默认模式random(pattern) – 基于正则表达式的自定义模式 |
| 转换工具 | listObjToMap(list1, list2, keyField, valueField) – 将两个对象列表合并为映射 |
| JSON 解析 | json.unmarshal(jsonString) – 将 JSON 字符串解析为结构化数据 |
| YAML 解析 | yaml.parse(yamlString) – 将 YAML 字符串解析为结构化数据 |
| 基于时间的逻辑 | time.now()time.truncate(timestamp, duration)time.toCron(timestamp) – 支持“自上次”或“维护窗口”式的时间策略 |
废弃传统 API
随着 Kyverno 的成熟并更加贴合上游 Kubernetes 标准,我们正进行一次战略性转向,采用 CEL‑first 架构。这意味着使用 JMESPath 多年服务社区的传统 Policy 与 ClusterPolicy 类型即将进入退役阶段。
废弃时间表
| 发行版 | 预计日期 | 状态 |
|---|---|---|
| v1.17 | 2026 年 1 月 | 标记为废弃 |
| v1.18 | 2026 年 4 月 | 仅提供关键修复 |
| v1.19 | 2026 年 7 月 | 仅提供关键修复 |
| v1.20 | 2026 年 10 月 | 计划移除 |
为什么要进行此更改?
通过统一使用 通用表达式语言(Common Expression Language,CEL),Kyverno 显著提升了 性能、安全性 与 与原生 Kubernetes 入场控制机制的兼容性。此转变为构建更稳健、面向未来的策略引擎奠定基础,使其能够随云原生平台不断演进的需求而扩展。
性能与对齐
新的 CEL 引擎提升了性能,并与 Kubernetes API Server 本身使用的原生校验逻辑保持一致。
对于平台团队而言,这意味着少学一种语言,并且能够获得更可预测、可扩展的 policy‑as‑code 体验。
作者须知
从此以后,我们强烈建议您编写的所有新策略都基于全新的 CEL API。今天在新工作中仍选择使用旧版 API,只会在今年稍后增加迁移工作量。
迁移技巧
我们了解很多用户拥有数百条已有策略。为确保平稳过渡,我们提供了完整的资源:
- 迁移指南 – 逐项对应旧版
ClusterPolicy字段与新字段的映射(例如,将validate.pattern映射到ValidatingPolicy表达式)。 - 新策略类型 – 介绍
ValidatingPolicy、MutatingPolicy、GeneratingPolicy等专用类型的概览。
加强供应链安全
供应链安全仍是 Kyverno 的核心支柱。
- Cosign v3 支持 – 1.17 版加入对最新 Cosign 功能的支持,确保您的镜像验证能够兼容不断演进的 Sigstore 生态系统。
- 扩展的证明解析 – 在 CEL 策略中新增对 YAML 与 JSON 字符串的反序列化能力,使验证复杂元数据和 SBOM 更加便捷。
可观测性与报告升级
我们优化了 Kyverno 对策略结果的呈现方式:
- 细粒度报告控制 – 新增
--allowedResults标志,可过滤仅存储特定结果(例如仅 “Fail”)到报告中,显著降低大集群中 ETCD 的压力。 - 增强的指标 – 默认包含更详细的 CEL 策略延迟和执行指标,帮助您监控策略执行的“隐藏”成本。
面向开发者与集成者
为支持更广泛的生态并简化集成工作,我们对核心组件进行了拆分:
- 全新 API 仓库 – 基于 CEL 的 API 现已迁移至专用仓库:
kyverno/api。 - Kyverno SDK – 用于自定义控制器或工具的 SDK 项目现位于
kyverno/sdk。
入门与向后兼容
从 1.16 升级非常简便。由于 CEL 策略类型已迁移至 v1,我们建议将清单更新为新 API 版本。Kyverno 将在过渡期间继续支持 v1beta1。
helm repo update
helm upgrade --install kyverno kyverno/kyverno -n kyverno --version 3.7.0
展望:Kyverno 路线图
在跨过 1.17 里程碑后,我们的重点转向长期可持续性以及 “Kyverno Platform” 体验。
- 社区壮大 – 更频繁的办公时间、改进的贡献者入门流程,以及重新聚焦让 Kyverno 社区成为 CNCF 中最友好的空间。
- 统一的工具体验 – 将子项目(CLI、Policy Reporter、Kyverno‑Authz)整合为统一套件,降低碎片化。
- 性能与可扩展性护栏 – 自动化性能测试与细粒度指标,帮助平台工程师在大规模环境下了解吞吐量和延迟。
- 持续的用户体验改进 – 持续迭代用户界面、文档和错误信息,使 Kyverno 从设计上保持 “简化”。
结论
Kyverno 1.17 是迄今为止最稳健的版本,融合了原始引擎的灵活性与 CEL 的性能和标准化。
但此版本不仅仅是代码的升级——它关乎整体用户体验。无论您是浏览全新的策略目录,还是在规模化数千条基于 CEL 的规则, 我们都希望此发布能为您带来更好的使用感受。
ease 让您的 Kubernetes 之旅更加顺畅。
衷心感谢我们的贡献者,使本次发布(以及全新网站!)成为可能。