Skip to main content

Compatibility and versioning

Versions​

petri versions follow the k8s.io staging modules. Use the petri minor that matches your k8s.io/client-go minor:

petriKubernetesk8s.io/client-gocontroller-runtime (via petri/controllerruntime)
v0.37.x1.37v0.37.xv0.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.KubernetesVersion gives the Kubernetes minor a build targets.
  • Every petri release also releases the controllerruntime module, tagged controllerruntime/v0.N.P with 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.