当搞完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
进入调谐状态中