in pkg/controllers/serviceexport_controller.go [56:98]
func RegisterServiceExportController(
log gwlog.Logger,
cloud aws.Cloud,
finalizerManager k8s.FinalizerManager,
mgr ctrl.Manager,
) error {
mgrClient := mgr.GetClient()
scheme := mgr.GetScheme()
eventRecorder := mgr.GetEventRecorderFor("serviceExport")
modelBuilder := gateway.NewSvcExportTargetGroupBuilder(log, mgrClient)
stackDeploy := deploy.NewTargetGroupStackDeploy(log, cloud, mgrClient)
stackMarshaller := deploy.NewDefaultStackMarshaller()
r := &serviceExportReconciler{
log: log,
client: mgrClient,
Scheme: scheme,
finalizerManager: finalizerManager,
modelBuilder: modelBuilder,
stackDeployer: stackDeploy,
eventRecorder: eventRecorder,
stackMarshaller: stackMarshaller,
}
svcEventHandler := eventhandlers.NewServiceEventHandler(log, r.client)
builder := ctrl.NewControllerManagedBy(mgr).
For(&anv1alpha1.ServiceExport{}).
Watches(&corev1.Service{}, svcEventHandler.MapToServiceExport()).
Watches(&discoveryv1.EndpointSlice{}, svcEventHandler.MapToServiceExport())
if ok, err := k8s.IsGVKSupported(mgr, anv1alpha1.GroupVersion.String(), anv1alpha1.TargetGroupPolicyKind); ok {
builder.Watches(&anv1alpha1.TargetGroupPolicy{}, svcEventHandler.MapToServiceExport())
} else {
if err != nil {
return err
}
log.Infof(context.TODO(), "TargetGroupPolicy CRD is not installed, skipping watch")
}
return builder.Complete(r)
}