@@ -797,29 +797,6 @@ func main() {
797797 }
798798 }
799799
800- logger .Printf ("[Azure CNS] Initialize HTTPRemoteRestService" )
801- if httpRemoteRestService != nil {
802- if cnsconfig .UseHTTPS {
803- config .TLSSettings = localtls.TlsSettings {
804- TLSSubjectName : cnsconfig .TLSSubjectName ,
805- TLSCertificatePath : cnsconfig .TLSCertificatePath ,
806- TLSPort : cnsconfig .TLSPort ,
807- KeyVaultURL : cnsconfig .KeyVaultSettings .URL ,
808- KeyVaultCertificateName : cnsconfig .KeyVaultSettings .CertificateName ,
809- MSIResourceID : cnsconfig .MSISettings .ResourceID ,
810- KeyVaultCertificateRefreshInterval : time .Duration (cnsconfig .KeyVaultSettings .RefreshIntervalInHrs ) * time .Hour ,
811- UseMTLS : cnsconfig .UseMTLS ,
812- MinTLSVersion : cnsconfig .MinTLSVersion ,
813- }
814- }
815-
816- err = httpRemoteRestService .Init (& config )
817- if err != nil {
818- logger .Errorf ("Failed to init HTTPService, err:%v.\n " , err )
819- return
820- }
821- }
822-
823800 // Setting the remote ARP MAC address to 12-34-56-78-9a-bc on windows for external traffic if HNS is enabled
824801 err = platform .SetSdnRemoteArpMacAddress (rootCtx )
825802 if err != nil {
@@ -870,7 +847,8 @@ func main() {
870847
871848 logger .Printf ("Set GlobalPodInfoScheme %v (InitializeFromCNI=%t)" , cns .GlobalPodInfoScheme , cnsconfig .InitializeFromCNI )
872849
873- err = InitializeCRDState (rootCtx , z , httpRemoteRestService , cnsconfig )
850+ client , err := InitializeCRDState (rootCtx , z , httpRemoteRestService , cnsconfig )
851+ config .Client = client
874852 if err != nil {
875853 logger .Errorf ("Failed to start CRD Controller, err:%v.\n " , err )
876854 return
@@ -891,6 +869,29 @@ func main() {
891869 }
892870 }
893871
872+ logger .Printf ("[Azure CNS] Initialize HTTPRemoteRestService" )
873+ if httpRemoteRestService != nil {
874+ if cnsconfig .UseHTTPS {
875+ config .TLSSettings = localtls.TlsSettings {
876+ TLSSubjectName : cnsconfig .TLSSubjectName ,
877+ TLSCertificatePath : cnsconfig .TLSCertificatePath ,
878+ TLSPort : cnsconfig .TLSPort ,
879+ KeyVaultURL : cnsconfig .KeyVaultSettings .URL ,
880+ KeyVaultCertificateName : cnsconfig .KeyVaultSettings .CertificateName ,
881+ MSIResourceID : cnsconfig .MSISettings .ResourceID ,
882+ KeyVaultCertificateRefreshInterval : time .Duration (cnsconfig .KeyVaultSettings .RefreshIntervalInHrs ) * time .Hour ,
883+ UseMTLS : cnsconfig .UseMTLS ,
884+ MinTLSVersion : cnsconfig .MinTLSVersion ,
885+ }
886+ }
887+
888+ err = httpRemoteRestService .Init (& config )
889+ if err != nil {
890+ logger .Errorf ("Failed to init HTTPService, err:%v.\n " , err )
891+ return
892+ }
893+ }
894+
894895 // AzureHost channelmode indicates Nodesubnet. IPs are to be fetched from NMagent.
895896 if config .ChannelMode == cns .AzureHost {
896897 if ! cnsconfig .ManageEndpointState {
@@ -1375,12 +1376,12 @@ func reconcileInitialCNSState(ctx context.Context, cli nodeNetworkConfigGetter,
13751376// InitializeCRDState builds and starts the CRD controllers.
13761377//
13771378//nolint:gocyclo // legacy
1378- func InitializeCRDState (ctx context.Context , z * zap.Logger , httpRestService cns.HTTPService , cnsconfig * configuration.CNSConfig ) error {
1379+ func InitializeCRDState (ctx context.Context , z * zap.Logger , httpRestService cns.HTTPService , cnsconfig * configuration.CNSConfig ) (client. Client , error ) {
13791380 // convert interface type to implementation type
13801381 httpRestServiceImplementation , ok := httpRestService .(* restserver.HTTPRestService )
13811382 if ! ok {
13821383 logger .Errorf ("[Azure CNS] Failed to convert interface httpRestService to implementation: %v" , httpRestService )
1383- return fmt .Errorf ("[Azure CNS] Failed to convert interface httpRestService to implementation: %v" ,
1384+ return nil , fmt .Errorf ("[Azure CNS] Failed to convert interface httpRestService to implementation: %v" ,
13841385 httpRestService )
13851386 }
13861387
@@ -1394,59 +1395,59 @@ func InitializeCRDState(ctx context.Context, z *zap.Logger, httpRestService cns.
13941395 kubeConfig , err := ctrl .GetConfig ()
13951396 if err != nil {
13961397 logger .Errorf ("[Azure CNS] Failed to get kubeconfig for request controller: %v" , err )
1397- return errors .Wrap (err , "failed to get kubeconfig" )
1398+ return nil , errors .Wrap (err , "failed to get kubeconfig" )
13981399 }
13991400 kubeConfig .UserAgent = fmt .Sprintf ("azure-cns-%s" , version )
14001401
14011402 clientset , err := kubernetes .NewForConfig (kubeConfig )
14021403 if err != nil {
1403- return errors .Wrap (err , "failed to build clientset" )
1404+ return nil , errors .Wrap (err , "failed to build clientset" )
14041405 }
14051406
14061407 // get nodename for scoping kube requests to node.
14071408 nodeName , err := configuration .NodeName ()
14081409 if err != nil {
1409- return errors .Wrap (err , "failed to get NodeName" )
1410+ return nil , errors .Wrap (err , "failed to get NodeName" )
14101411 }
14111412
14121413 node , err := clientset .CoreV1 ().Nodes ().Get (ctx , nodeName , metav1.GetOptions {})
14131414 if err != nil {
1414- return errors .Wrapf (err , "failed to get node %s" , nodeName )
1415+ return nil , errors .Wrapf (err , "failed to get node %s" , nodeName )
14151416 }
14161417
14171418 // check the Node labels for Swift V2
14181419 if _ , ok := node .Labels [configuration .LabelNodeSwiftV2 ]; ok {
14191420 cnsconfig .EnableSwiftV2 = true
14201421 cnsconfig .WatchPods = true
14211422 if nodeInfoErr := createOrUpdateNodeInfoCRD (ctx , kubeConfig , node ); nodeInfoErr != nil {
1422- return errors .Wrap (nodeInfoErr , "error creating or updating nodeinfo crd" )
1423+ return nil , errors .Wrap (nodeInfoErr , "error creating or updating nodeinfo crd" )
14231424 }
14241425 }
14251426
14261427 // perform state migration from CNI in case CNS is set to manage the endpoint state and has emty state
14271428 if cnsconfig .EnableStateMigration && ! httpRestServiceImplementation .EndpointStateStore .Exists () {
14281429 if err = PopulateCNSEndpointState (httpRestServiceImplementation .EndpointStateStore ); err != nil {
1429- return errors .Wrap (err , "failed to create CNS EndpointState From CNI" )
1430+ return nil , errors .Wrap (err , "failed to create CNS EndpointState From CNI" )
14301431 }
14311432 // endpoint state needs tobe loaded in memory so the subsequent Delete calls remove the state and release the IPs.
14321433 if err = httpRestServiceImplementation .EndpointStateStore .Read (restserver .EndpointStoreKey , & httpRestServiceImplementation .EndpointState ); err != nil {
1433- return errors .Wrap (err , "failed to restore endpoint state" )
1434+ return nil , errors .Wrap (err , "failed to restore endpoint state" )
14341435 }
14351436 }
14361437
14371438 podInfoByIPProvider , err := getPodInfoByIPProvider (ctx , cnsconfig , httpRestServiceImplementation , clientset , nodeName )
14381439 if err != nil {
1439- return errors .Wrap (err , "failed to initialize ip state" )
1440+ return nil , errors .Wrap (err , "failed to initialize ip state" )
14401441 }
14411442
14421443 // create scoped kube clients.
14431444 directcli , err := client .New (kubeConfig , client.Options {Scheme : nodenetworkconfig .Scheme })
14441445 if err != nil {
1445- return errors .Wrap (err , "failed to create ctrl client" )
1446+ return nil , errors .Wrap (err , "failed to create ctrl client" )
14461447 }
14471448 directnnccli := nodenetworkconfig .NewClient (directcli )
14481449 if err != nil {
1449- return errors .Wrap (err , "failed to create NNC client" )
1450+ return nil , errors .Wrap (err , "failed to create NNC client" )
14501451 }
14511452 // TODO(rbtr): nodename and namespace should be in the cns config
14521453 directscopedcli := nncctrl .NewScopedClient (directnnccli , types.NamespacedName {Namespace : "kube-system" , Name : nodeName })
@@ -1470,16 +1471,16 @@ func InitializeCRDState(ctx context.Context, z *zap.Logger, httpRestService cns.
14701471 hasNNCInitialized .Set (1 )
14711472 scheme := kuberuntime .NewScheme ()
14721473 if err := corev1 .AddToScheme (scheme ); err != nil { //nolint:govet // intentional shadow
1473- return errors .Wrap (err , "failed to add corev1 to scheme" )
1474+ return nil , errors .Wrap (err , "failed to add corev1 to scheme" )
14741475 }
14751476 if err = v1alpha .AddToScheme (scheme ); err != nil {
1476- return errors .Wrap (err , "failed to add nodenetworkconfig/v1alpha to scheme" )
1477+ return nil , errors .Wrap (err , "failed to add nodenetworkconfig/v1alpha to scheme" )
14771478 }
14781479 if err = cssv1alpha1 .AddToScheme (scheme ); err != nil {
1479- return errors .Wrap (err , "failed to add clustersubnetstate/v1alpha1 to scheme" )
1480+ return nil , errors .Wrap (err , "failed to add clustersubnetstate/v1alpha1 to scheme" )
14801481 }
14811482 if err = mtv1alpha1 .AddToScheme (scheme ); err != nil {
1482- return errors .Wrap (err , "failed to add multitenantpodnetworkconfig/v1alpha1 to scheme" )
1483+ return nil , errors .Wrap (err , "failed to add multitenantpodnetworkconfig/v1alpha1 to scheme" )
14831484 }
14841485
14851486 // Set Selector options on the Manager cache which are used
@@ -1520,7 +1521,7 @@ func InitializeCRDState(ctx context.Context, z *zap.Logger, httpRestService cns.
15201521
15211522 manager , err := ctrl .NewManager (kubeConfig , managerOpts )
15221523 if err != nil {
1523- return errors .Wrap (err , "failed to create manager" )
1524+ return nil , errors .Wrap (err , "failed to create manager" )
15241525 }
15251526
15261527 // this cachedscopedclient is built using the Manager's cached client, which is
@@ -1562,14 +1563,14 @@ func InitializeCRDState(ctx context.Context, z *zap.Logger, httpRestService cns.
15621563 // IPAMv2 - reconcile all updates.
15631564 filterGenerationChange := ! cnsconfig .EnableIPAMv2
15641565 if err := nncReconciler .SetupWithManager (manager , node , filterGenerationChange ); err != nil { //nolint:govet // intentional shadow
1565- return errors .Wrapf (err , "failed to setup nnc reconciler with manager" )
1566+ return nil , errors .Wrapf (err , "failed to setup nnc reconciler with manager" )
15661567 }
15671568
15681569 if cnsconfig .EnableSubnetScarcity {
15691570 // ClusterSubnetState reconciler
15701571 cssReconciler := cssctrl .New (cssCh )
15711572 if err := cssReconciler .SetupWithManager (manager ); err != nil {
1572- return errors .Wrapf (err , "failed to setup css reconciler with manager" )
1573+ return nil , errors .Wrapf (err , "failed to setup css reconciler with manager" )
15731574 }
15741575 }
15751576
@@ -1583,13 +1584,13 @@ func InitializeCRDState(ctx context.Context, z *zap.Logger, httpRestService cns.
15831584 pw .With (pw .NewNotifierFunc (hostNetworkListOpt , limit , ipampoolv2 .PodIPDemandListener (ipDemandCh )))
15841585 }
15851586 if err := pw .SetupWithManager (ctx , manager ); err != nil {
1586- return errors .Wrapf (err , "failed to setup pod watcher with manager" )
1587+ return nil , errors .Wrapf (err , "failed to setup pod watcher with manager" )
15871588 }
15881589 }
15891590
15901591 if cnsconfig .EnableSwiftV2 {
15911592 if err := mtpncctrl .SetupWithManager (manager ); err != nil {
1592- return errors .Wrapf (err , "failed to setup mtpnc reconciler with manager" )
1593+ return nil , errors .Wrapf (err , "failed to setup mtpnc reconciler with manager" )
15931594 }
15941595 // if SWIFT v2 is enabled on CNS, attach multitenant middleware to rest service
15951596 // switch here for AKS(K8s) swiftv2 middleware to process IP configs requests
@@ -1659,7 +1660,7 @@ func InitializeCRDState(ctx context.Context, z *zap.Logger, httpRestService cns.
16591660 }
16601661 }()
16611662 logger .Printf ("Initialized SyncHostNCVersion loop." )
1662- return nil
1663+ return manager . GetClient (), nil
16631664}
16641665
16651666// getPodInfoByIPProvider returns a PodInfoByIPProvider that reads endpoint state from the configured source
0 commit comments