operator/checkcontroller/setup.go
package checkcontroller
import (
k8upv1 "github.com/k8up-io/k8up/v2/api/v1"
"github.com/k8up-io/k8up/v2/operator/reconciler"
batchv1 "k8s.io/api/batch/v1"
ctrl "sigs.k8s.io/controller-runtime"
"sigs.k8s.io/controller-runtime/pkg/predicate"
)
// +kubebuilder:rbac:groups=k8up.io,resources=checks,verbs=get;list;watch;create;update;patch;delete
// +kubebuilder:rbac:groups=k8up.io,resources=checks/status;checks/finalizers,verbs=get;update;patch
// +kubebuilder:rbac:groups=batch,resources=jobs,verbs=get;list;watch;create;update;patch;delete
// SetupWithManager configures the reconciler.
func SetupWithManager(mgr ctrl.Manager) error {
name := "check.k8up.io"
r := reconciler.NewReconciler[*k8upv1.Check, *k8upv1.CheckList](mgr.GetClient(), &CheckReconciler{
Kube: mgr.GetClient(),
})
return ctrl.NewControllerManagedBy(mgr).
For(&k8upv1.Check{}).
Owns(&batchv1.Job{}).
Named(name).
WithEventFilter(predicate.GenerationChangedPredicate{}).
Complete(r)
}