If it has to be about operator sdk then it’s not the best example because it doesn’t use operator sdk, it uses the lower level client-go directly (I’m just commenting this because the original post was asking about operator sdk). I personally prefer client-go, the operator sdk interface never really spoke to me.
(Full disclosure, I’m the co-creator and one of the maintainers of prometheus operator)
I am the person who asked and I was probably unclear. I mentioned the operator sdk because that is what I am trying at the moment but I am open to other approaches so this example is welcome
In that case I recommend using client-go directly. In my admittedly limited experience with operator sdk (which was created long after the Prometheus operator), it tries to abstract a lot of things to make things like working with operator lifecycle manager (OLM) easier, but also causes a lot of (to me) unnatural interfaces and sometimes downright prevented me from doing things I needed to do because things were abstracted and hidden too much. We’ve attempted to migrate Prometheus operator several times but never successfully.
SchemaHero (https://github.com/schemahero/schemahero) is an operator that was bootstrapped with Kubebuilder, updated to new API versions, and isn't too complex to look at the code.
Prometheus-operator is great indeed.
If you like the video format, you might like this one from one of the Civo engineers, Alex: https://m.youtube.com/watch?v=08O9eLJGQRM