kubeconform 是什么
对 Kubernetes YAML 做离线 schema 校验的工具(kubeconform 是 kubeval 的后继者):在 CI 里拦住字段拼写、类型与版本不兼容问题,避免「提交后才发现」。校验对象应是渲染后的最终清单,而不是模板源文件——模板语法正确不代表产物正确。两个工具的关系:kubeval 已停止维护,新项目直接用 kubeconform,命令参数接近,迁移成本低。
基本信息
| 工具 | kubeconform(后继者)、kubeval(历史广泛使用) |
|---|---|
| 要点 | 指定目标 K8s 版本与 schema 源;支持 CRD 的 schema 来源配置 |
| 集成 | CI 步骤:helm template/kustomize build 输出 → 校验 |
| 版本 | schema 版本跟随目标集群版本选择 |
| CRD | 自定义资源的 schema 需另行配置来源 |
| 维护状态 | kubeval 已停维护,新项目选 kubeconform |
典型使用场景
- CI 门禁:提交前拦住低频字段错误
- Helm 渲染校验:template 输出再验一遍
- Kustomize 产物校验:overlay 合并后检查
- 多版本矩阵:同一清单验证多个 K8s 版本兼容性
- CRD 校验:为自定义资源补 schema 来源
- 离线环境:schema 预缓存后在无网环境运行
- 存量体检:一次性扫描历史 YAML 找出隐患
- 规范落地:把校验钉进模板仓库的 PR 流程
命令
命令
kustomize build overlays/prod | kubeconform -strict -kubernetes-version 1.29.0 -summary
helm template app ./chart | kubeconform -strict -summary
# -strict 拒绝未知字段;按目标集群版本指定 schema
# CRD 需在配置里指定额外 schema 位置报错类型速读
| 报错 | 含义 | 处理 |
|---|---|---|
| unknown field | 字段拼写错误或版本不支持 | 对照目标版本文档修正 |
| invalid type | 字段类型不符 | 改为 schema 要求的类型 |
| could not find schema | 找不到该资源 schema | 检查 CRD schema 来源配置 |
| error validating data | 整体解析失败 | 先修 YAML 语法再看字段 |
校验渲染后的最终清单:模板语法正确不等于产物正确。
版本漂移:校验用的 schema 版本要与集群升级节奏同步,否则要么漏拦要么误报。
与策略检查分工:schema 校验管「字段对不对」,策略工具管「允不允许」,两层都要。