in cmd/member-net-controller-manager/main.go [257:399]
func setupControllersWithManager(ctx context.Context, hubMgr, memberMgr manager.Manager) error {
klog.V(1).InfoS("Begin to setup controllers with controller manager")
mcName, err := env.LookupMemberClusterName()
if err != nil {
klog.ErrorS(err, "Member cluster name cannot be empty")
return err
}
mcHubNamespace, err := hubconfig.FetchMemberClusterNamespace()
if err != nil {
klog.ErrorS(err, "Failed to get member cluster hub namespace")
return err
}
memberClient := memberMgr.GetClient()
hubClient := hubMgr.GetClient()
klog.V(1).InfoS("Create endpointslice controller")
if err := (&endpointslice.Reconciler{
MemberClusterID: mcName,
MemberClient: memberClient,
HubClient: hubClient,
HubNamespace: mcHubNamespace,
}).SetupWithManager(ctx, memberMgr); err != nil {
klog.ErrorS(err, "Unable to create endpointslice controller")
return err
}
klog.V(1).InfoS("Create endpointsliceexport controller")
if err := (&endpointsliceexport.Reconciler{
MemberClient: memberClient,
HubClient: hubClient,
}).SetupWithManager(hubMgr); err != nil {
klog.ErrorS(err, "Unable to create endpointsliceexport controller")
return err
}
klog.V(1).InfoS("Create endpointsliceimport controller")
if err := (&endpointsliceimport.Reconciler{
MemberClusterID: mcName,
MemberClient: memberClient,
HubClient: hubClient,
FleetSystemNamespace: *fleetSystemNamespace,
}).SetupWithManager(ctx, memberMgr, hubMgr); err != nil {
klog.ErrorS(err, "Unable to create endpointsliceimport controller")
return err
}
klog.V(1).InfoS("Create internalserviceexport controller")
if err := (&internalserviceexport.Reconciler{
MemberClusterID: mcName,
MemberClient: memberClient,
HubClient: hubClient,
Recorder: memberMgr.GetEventRecorderFor(internalserviceexport.ControllerName),
}).SetupWithManager(hubMgr); err != nil {
klog.ErrorS(err, "Unable to create internalserviceexport controller")
return err
}
klog.V(1).InfoS("Create internalserviceimport controller")
if err := (&internalserviceimport.Reconciler{
MemberClient: memberClient,
HubClient: hubClient,
}).SetupWithManager(hubMgr); err != nil {
klog.ErrorS(err, "Unable to create internalserviceimport controller")
return err
}
var azurePublicIPAddressClient publicipaddressclient.Interface
var resourceGroupName string
if *enableTrafficManagerFeature {
klog.V(1).InfoS("Traffic manager feature is enabled, loading cloud config and creating azure clients", "cloudConfigFile", *cloudConfigFile)
cloudConfig, err := azure.NewCloudConfigFromFile(*cloudConfigFile)
if err != nil {
klog.ErrorS(err, "Unable to load cloud config", "file name", *cloudConfigFile)
return err
}
cloudConfig.SetUserAgent("fleet-member-net-controller-manager")
klog.V(1).InfoS("Cloud config loaded", "cloudConfig", cloudConfig)
azurePublicIPAddressClient, err = initAzureNetworkClients(cloudConfig)
if err != nil {
klog.ErrorS(err, "Unable to create Azure Traffic Manager clients")
return err
}
resourceGroupName = cloudConfig.ResourceGroup
}
klog.V(1).InfoS("Create serviceexport reconciler", "enableTrafficManagerFeature", *enableTrafficManagerFeature)
if err := (&serviceexport.Reconciler{
MemberClient: memberClient,
HubClient: hubClient,
MemberClusterID: mcName,
HubNamespace: mcHubNamespace,
Recorder: memberMgr.GetEventRecorderFor(serviceexport.ControllerName),
EnableTrafficManagerFeature: *enableTrafficManagerFeature,
ResourceGroupName: resourceGroupName,
AzurePublicIPAddressClient: azurePublicIPAddressClient,
}).SetupWithManager(memberMgr); err != nil {
klog.ErrorS(err, "Unable to create serviceexport reconciler")
return err
}
klog.V(1).InfoS("Create serviceimport reconciler")
if err := (&serviceimport.Reconciler{
MemberClient: memberClient,
HubClient: hubClient,
MemberClusterID: mcName,
HubNamespace: mcHubNamespace,
}).SetupWithManager(memberMgr); err != nil {
klog.ErrorS(err, "Unable to create serviceimport reconciler")
return err
}
if *isV1Alpha1APIEnabled {
klog.V(1).InfoS("Create internalmembercluster (v1alpha1 API) reconciler")
if err := (&imcv1alpha1.Reconciler{
MemberClient: memberClient,
HubClient: hubClient,
AgentType: fleetv1alpha1.ServiceExportImportAgent,
}).SetupWithManager(hubMgr); err != nil {
klog.ErrorS(err, "Unable to create internalmembercluster (v1alpha1 API) reconciler")
return err
}
}
if *isV1Beta1APIEnabled {
klog.V(1).InfoS("Create internalmembercluster (v1beta1 API) reconciler")
if err := (&imcv1beta1.Reconciler{
MemberClient: memberClient,
HubClient: hubClient,
AgentType: clusterv1beta1.ServiceExportImportAgent,
}).SetupWithManager(hubMgr); err != nil {
klog.ErrorS(err, "Unable to create internalmembercluster (v1beta1 API) reconciler")
return err
}
}
klog.V(1).InfoS("Succeeded to setup controllers with controller manager")
return nil
}