Compatibility and versioning
Versions
petri versions follow the k8s.io staging modules. Use the petri minor that
matches your k8s.io/client-go minor:
| petri | Kubernetes | k8s.io/client-go | controller-runtime (via petri/controllerruntime) |
|---|---|---|---|
v0.37.x | 1.37 | v0.37.x | v0.25.x |
- Only the minor matches Kubernetes. The patch number goes up with every petri release, whatever the change.
- There is no
v1, and every petri minor matches a Kubernetes minor. petri.KubernetesVersiongives the Kubernetes minor a build targets.- Every petri release also releases the
controllerruntimemodule, taggedcontrollerruntime/v0.N.Pwith the same version.
main carries the newest Kubernetes minor. Older minors live on release-1.N
branches, which keep getting Kubernetes patch updates. Their docs stay
available from the version menu.
One version per test binary
The API server is compiled into your test binary from the same k8s.io
modules as your code, so its version always matches your client libraries.
You cannot choose another server version at runtime, and petri cannot test
version skew, such as a client against an older or newer server. envtest can,
because its API server is a separate binary.
Go
petri needs the Go version its Kubernetes release needs, never a newer one: Go 1.26 for Kubernetes 1.37.
Platforms
petri is tested on Linux and macOS, on amd64 and arm64, and builds for Windows.