@@ -14,8 +14,8 @@ import (
14
14
"k8s.io/client-go/kubernetes"
15
15
"k8s.io/client-go/rest"
16
16
"k8s.io/client-go/tools/clientcmd"
17
- "k8s.io/klog "
18
- "k8s.io/kubernetes/pkg/cloudprovider "
17
+ cloudprovider "k8s.io/cloud-provider "
18
+ "k8s.io/klog/v2 "
19
19
20
20
"github.com/linode/linode-cloud-controller-manager/sentry"
21
21
"github.com/linode/linodego"
@@ -111,7 +111,7 @@ func (l *loadbalancers) getLatestServiceLoadBalancerStatus(ctx context.Context,
111
111
return v1.LoadBalancerStatus {}, err
112
112
}
113
113
114
- service , err = l .kubeClient .CoreV1 ().Services (service .Namespace ).Get (service .Name , metav1.GetOptions {})
114
+ service , err = l .kubeClient .CoreV1 ().Services (service .Namespace ).Get (ctx , service .Name , metav1.GetOptions {})
115
115
if err != nil {
116
116
return v1.LoadBalancerStatus {}, err
117
117
}
@@ -164,6 +164,14 @@ func (l *loadbalancers) cleanupOldNodeBalancer(ctx context.Context, service *v1.
164
164
return nil
165
165
}
166
166
167
+ // GetLoadBalancerName returns the name of the load balancer.
168
+ //
169
+ // GetLoadBalancer will not modify service.
170
+ func (l * loadbalancers ) GetLoadBalancerName (ctx context.Context , clusterName string , service * v1.Service ) string {
171
+ unixNano := strconv .FormatInt (time .Now ().UnixNano (), 16 )
172
+ return fmt .Sprintf ("ccm-%s" , unixNano [len (unixNano )- 12 :])
173
+ }
174
+
167
175
// GetLoadBalancer returns the *v1.LoadBalancerStatus of service.
168
176
//
169
177
// GetLoadBalancer will not modify service.
@@ -203,7 +211,7 @@ func (l *loadbalancers) EnsureLoadBalancer(ctx context.Context, clusterName stri
203
211
nb , err = l .getNodeBalancerForService (ctx , service )
204
212
switch err .(type ) {
205
213
case lbNotFoundError :
206
- if nb , err = l .buildLoadBalancerRequest (ctx , service , nodes ); err != nil {
214
+ if nb , err = l .buildLoadBalancerRequest (ctx , clusterName , service , nodes ); err != nil {
207
215
sentry .CaptureError (ctx , err )
208
216
return nil , err
209
217
}
@@ -269,7 +277,7 @@ func (l *loadbalancers) updateNodeBalancer(ctx context.Context, service *v1.Serv
269
277
}
270
278
271
279
// Construct a new config for this port
272
- newNBCfg , err := l .buildNodeBalancerConfig (service , int (port .Port ))
280
+ newNBCfg , err := l .buildNodeBalancerConfig (ctx , service , int (port .Port ))
273
281
if err != nil {
274
282
sentry .CaptureError (ctx , err )
275
283
return err
@@ -453,11 +461,10 @@ func (l *loadbalancers) getNodeBalancerByID(ctx context.Context, service *v1.Ser
453
461
return nb , nil
454
462
}
455
463
456
- func (l * loadbalancers ) createNodeBalancer (ctx context.Context , service * v1.Service , configs []* linodego.NodeBalancerConfigCreateOptions ) (lb * linodego.NodeBalancer , err error ) {
464
+ func (l * loadbalancers ) createNodeBalancer (ctx context.Context , clusterName string , service * v1.Service , configs []* linodego.NodeBalancerConfigCreateOptions ) (lb * linodego.NodeBalancer , err error ) {
457
465
connThrottle := getConnectionThrottle (service )
458
466
459
- unixNano := strconv .FormatInt (time .Now ().UnixNano (), 16 )
460
- label := fmt .Sprintf ("ccm-%s" , unixNano [len (unixNano )- 12 :])
467
+ label := l .GetLoadBalancerName (ctx , clusterName , service )
461
468
createOpts := linodego.NodeBalancerCreateOptions {
462
469
Label : & label ,
463
470
Region : l .zone ,
@@ -468,7 +475,7 @@ func (l *loadbalancers) createNodeBalancer(ctx context.Context, service *v1.Serv
468
475
}
469
476
470
477
//nolint:funlen
471
- func (l * loadbalancers ) buildNodeBalancerConfig (service * v1.Service , port int ) (linodego.NodeBalancerConfig , error ) {
478
+ func (l * loadbalancers ) buildNodeBalancerConfig (ctx context. Context , service * v1.Service , port int ) (linodego.NodeBalancerConfig , error ) {
472
479
portConfig , err := getPortConfig (service , port )
473
480
if err != nil {
474
481
return linodego.NodeBalancerConfig {}, err
@@ -534,21 +541,21 @@ func (l *loadbalancers) buildNodeBalancerConfig(service *v1.Service, port int) (
534
541
config .CheckPassive = checkPassive
535
542
536
543
if portConfig .Protocol == linodego .ProtocolHTTPS {
537
- if err = l .addTLSCert (service , & config , portConfig ); err != nil {
544
+ if err = l .addTLSCert (ctx , service , & config , portConfig ); err != nil {
538
545
return config , err
539
546
}
540
547
}
541
548
542
549
return config , nil
543
550
}
544
551
545
- func (l * loadbalancers ) addTLSCert (service * v1.Service , nbConfig * linodego.NodeBalancerConfig , config portConfig ) error {
552
+ func (l * loadbalancers ) addTLSCert (ctx context. Context , service * v1.Service , nbConfig * linodego.NodeBalancerConfig , config portConfig ) error {
546
553
err := l .retrieveKubeClient ()
547
554
if err != nil {
548
555
return err
549
556
}
550
557
551
- nbConfig .SSLCert , nbConfig .SSLKey , err = getTLSCertInfo (l .kubeClient , service .Namespace , config )
558
+ nbConfig .SSLCert , nbConfig .SSLKey , err = getTLSCertInfo (ctx , l .kubeClient , service .Namespace , config )
552
559
if err != nil {
553
560
return err
554
561
}
@@ -557,7 +564,7 @@ func (l *loadbalancers) addTLSCert(service *v1.Service, nbConfig *linodego.NodeB
557
564
558
565
// buildLoadBalancerRequest returns a linodego.NodeBalancer
559
566
// requests for service across nodes.
560
- func (l * loadbalancers ) buildLoadBalancerRequest (ctx context.Context , service * v1.Service , nodes []* v1.Node ) (* linodego.NodeBalancer , error ) {
567
+ func (l * loadbalancers ) buildLoadBalancerRequest (ctx context.Context , clusterName string , service * v1.Service , nodes []* v1.Node ) (* linodego.NodeBalancer , error ) {
561
568
ports := service .Spec .Ports
562
569
configs := make ([]* linodego.NodeBalancerConfigCreateOptions , 0 , len (ports ))
563
570
@@ -566,7 +573,7 @@ func (l *loadbalancers) buildLoadBalancerRequest(ctx context.Context, service *v
566
573
return nil , fmt .Errorf ("error creating NodeBalancer Config: ports with the UDP protocol are not supported" )
567
574
}
568
575
569
- config , err := l .buildNodeBalancerConfig (service , int (port .Port ))
576
+ config , err := l .buildNodeBalancerConfig (ctx , service , int (port .Port ))
570
577
if err != nil {
571
578
return nil , err
572
579
}
@@ -578,7 +585,7 @@ func (l *loadbalancers) buildLoadBalancerRequest(ctx context.Context, service *v
578
585
579
586
configs = append (configs , & createOpt )
580
587
}
581
- return l .createNodeBalancer (ctx , service , configs )
588
+ return l .createNodeBalancer (ctx , clusterName , service , configs )
582
589
}
583
590
584
591
func (l * loadbalancers ) buildNodeBalancerNodeCreateOptions (node * v1.Node , nodePort int32 ) linodego.NodeBalancerNodeCreateOptions {
@@ -705,12 +712,12 @@ func getNodeInternalIP(node *v1.Node) string {
705
712
return ""
706
713
}
707
714
708
- func getTLSCertInfo (kubeClient kubernetes.Interface , namespace string , config portConfig ) (string , string , error ) {
715
+ func getTLSCertInfo (ctx context. Context , kubeClient kubernetes.Interface , namespace string , config portConfig ) (string , string , error ) {
709
716
if config .TLSSecretName == "" {
710
717
return "" , "" , fmt .Errorf ("TLS secret name for port %v is not specified" , config .Port )
711
718
}
712
719
713
- secret , err := kubeClient .CoreV1 ().Secrets (namespace ).Get (config .TLSSecretName , metav1.GetOptions {})
720
+ secret , err := kubeClient .CoreV1 ().Secrets (namespace ).Get (ctx , config .TLSSecretName , metav1.GetOptions {})
714
721
if err != nil {
715
722
return "" , "" , err
716
723
}
0 commit comments