1 回答
TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
最有可能的問題是WithEventFIlter適用于控制器的所有監(jiān)視對象。CRD 的生成是自動遞增的,但這并不適用于所有資源類型。
來自 GenerationChangedPredicate 文檔:
// Caveats:
//
// * The assumption that the Generation is incremented only on writing to the spec does not hold for all APIs.
// E.g For Deployment objects the Generation is also incremented on writes to the metadata.annotations field.
// For object types other than CustomResources be sure to verify which fields will trigger a Generation increment when they are written to.
您可以通過創(chuàng)建一個(gè)秘密/更新一個(gè)秘密來檢查這一點(diǎn),您會看到?jīng)]有生成集(至少在我的本地 k3d 集群上沒有)。
它很可能適用于創(chuàng)建,因?yàn)樽畛蹩刂破鲿F(xiàn)有資源與集群同步。
要解決它,您可以使用:
func (r *vtsReconciler) SetupWithManager(mgr ctrl.Manager) error {
manager := ctrl.NewControllerManagedBy(mgr).
For(&vts.str, WithPredicates(predicate.Or(predicate.GenerationChangedPredicate{}, predicate.AnnotationChangedPredicate{}))).
manager = manager.Watches(&source.Kind{Type: &v1.Secret{}}, handler.EnqueueRequestsFromMapFunc(func(a client.Object) []reconcile.Request {
return r.SecretRequests.FindForSecret(a.GetNamespace(), a.GetName())
}))
return manager.Complete(r)
}
它應(yīng)該只將謂詞應(yīng)用于您的自定義資源。
- 1 回答
- 0 關(guān)注
- 290 瀏覽
添加回答
舉報(bào)
