Skip to content
Latchkey

kubeval Deprecated: Migrating to kubeconform

kubeval is no longer maintained; replace it with kubeconform, which tracks current Kubernetes schemas, runs in parallel, and supports CRDs via -schema-location.

If a pipeline still calls kubeval and is failing on recent apiVersions, the fix is usually to migrate to kubeconform rather than to wrestle with kubeval schemas.

Why migrate

kubeval is archived and ships schemas that trail current Kubernetes, so manifests using newer apiVersions fail with could not find schema. kubeconform is actively maintained, faster (it parallelizes), supports CRD schemas through -schema-location, and offers junit/tap/json output for CI.

Flag mapping

kubevalkubeconform
--strict-strict
--kubernetes-version 1.x-kubernetes-version 1.x
--ignore-missing-schemas-ignore-missing-schemas
--skip-kinds A,B-skip A,B
-o json-output json

Migration example

Terminal
# before
kubeval --strict --kubernetes-version 1.29.0 manifests/
# after
kubeconform -strict -kubernetes-version 1.29.0 -summary manifests/

In CI

kubeconform reads stdin with -, so the kustomize pipeline becomes kustomize build overlay | kubeconform -strict -. Both tools exit non-zero on failure, so the pipeline gate behaves the same after swapping the binary and renaming flags.

Common errors in CI

After migrating, could not find schema for <CRD-Kind> appears for custom resources kubeval happened to skip; add their schemas with -schema-location or -ignore-missing-schemas. A double-dash flag like --strict passed to kubeconform errors with flag provided but not defined; kubeconform uses single-dash flags.

Related guides

Run this faster and cheaper on Latchkey managed runners. Start free →