Controller-runtime version pinning

What’s the recommended way to choose a controller-runtime version? I’ve read the various versioning docs, but if I am running K8s 1.17.9, client-go suggests using their v0.17.9 tag, while the latest controller-runtime (v0.8.1) uses client-go v0.20.2.

The controller-runtime docs link to the kubebuilder versioning guide that says the last N-3 or N-4 K8s versions tend to be supported. I saw the note that although this is true, it might need a newer version of client-go to compile. But then that would go against client-go’s versioning recommendations (for 1.17.9) in my case.

Should I bump down the controller-runtime version until the client-go that it uses is 0.17.9? Or is there a better way?

Using AKS on version 1.17.9.

Edit* It seems controller runtime roughly bases its minor version on the K8s version. Like 0.5 uses 1.17, 0.6 uses 1.18, 0.7 uses 1.19, and 0.8 uses 1.20. So I guess if I’m using K8s v1.17.9, I should use the latest 0.5 release (0.5.14) of controller-runtime which uses client-go v0.17.9.