Из того, что я понимаю (и из опыта) - информаторы kubernetes называют updateFunc
каждое событие "синхронизации" своего кеша - из того, что я понял, это из-за этого раздражающего спокойствия кода.
Пример определения информера:
informer:= NewInformer(
&cache.ListWatch{
ListFunc: func(options api.ListOptions) (runtime.Object, error) {
return kubeClient.Batch().Jobs(api.NamespaceAll).List(options)
},
WatchFunc: func(options api.ListOptions) (watch.Interface, error) {
return kubeClient.Batch().Jobs(api.NamespaceAll).Watch(options)
},....)
...
informer.AddEventHandler(cache.ResourceEventHandlerFuncs{
AddFunc: func(obj interface{}){},
// Make this function be called *only* on update.
UpdateFunc: func(old, current interface{}){},
DeleteFunc: func(current interface{}){},
})
Но для моего случая использования - вызов updateFunc
действительно должен происходить только при обновлении этого ресурса (например, я выполняю некоторые интенсивные вычисления для каждого обновления или собираюсьI / O).
Я бродил, есть ли способ позвонить updateFunc
только при обновлении?