当搞完controllerManager之后 builder.ControllerManagedBy(mgr) 就搞个监听 当删除的时候就调用删除函数
比如如下套路
1 | builder.ControllerManagedBy(mgr). |
加个watches函数 , 然后配上handler.Funcs 里面搞个删除函数
删除函数是我们自己写的controller函数的方法 这个方法是指针方法
比如下面的OnDelete函数
1 | func (d *DbConfigController) OnDelete(event event.DeleteEvent,limitingInterface workqueue.RateLimitingInterface) { |
里面就是把event里面的 OwnerReference拿到 因为这个OwnerReferences是个切片 所以可以range它, 我们就找他是不是和我们要删除的资源一样 , 是否等于我们要删除资源的Kind和APIVersion 如果是的话 就把他扔到队列里面 这个队列里面的东西都是NamespaceName这种格式的, 我们通过reconcile函数拿到相关Name和Namespace
这样手动删除的资源 就会再次触发reconcile 进入调谐状态中