// the find
kudobuilder/kuttl
KUbernetes Test TooL (kuttl)
KUTTL is a declarative test harness for Kubernetes operators: you write numbered YAML files per test step (apply this, assert that) instead of Go test code, and it runs them against a real or kind cluster. It's aimed at operator/controller authors who need integration-style tests without hand-rolling client-go boilerplate.
Test cases are just ordered YAML files (00-create-pod.yaml, 00-assert.yaml), so reviewing a test diff means reading Kubernetes manifests, not Go assertions. CRDs for testassert/teststep/testsuite give you schema validation and editor autocomplete on the test files themselves. CEL expression support (internal/expressions/cel.go) lets you write real conditional assertions instead of only strict equality/subset matching. It also ships as a Go library (pkg/test/harness.go) and a kubectl plugin, so you can either embed it in an existing test suite or run it standalone — not locked into one integration path.
The numbered-prefix convention (00-, 01-) for step ordering is implicit and silently breaks if you renumber or copy-paste files wrong — there's no explicit step index field. You need an actual cluster (kind in CI) to get anything meaningful out of it; the fake client only covers narrow unit-test paths, so a real test run has real infra cost and flakiness surface. Docs are mostly a handful of markdown files plus the test fixtures themselves as examples — there's no example gallery for anything beyond toy pod/deployment cases, so modeling a real operator's CRD lifecycle takes some digging. It's also tightly coupled to the Kubernetes object model, so it's not useful outside that world despite the generic 'test any Kubernetes objects' framing.