Last time we covered how controllers and informers work. This time, we write one! We build the same simple controller twice, live: first with raw client-go, wiring up informers and workqueues by hand, then with kubebuilder and controller-runtime, to see exactly what the framework does for you.