controller-runtime注册Reconcile队列的技巧

70 阅读1分钟

有一个controller-runtime注册Reconcile队列的技巧,使用reflect替换框架内部controller的队列,这样就能在另外的业务协程去添加入队任务,从而触发Reconcile。 这在检查业务漏掉删除事件的场景非常有用。

// 注册队列
reflect.ValueOf(instance).Elem().FieldByName("MakeQueue").Set(reflect.ValueOf(
	func() workqueue.RateLimitingInterface {
		return r.mainQueue
	}))