@@ -402,7 +402,11 @@ func (l *loadbalancers) updateNodeBalancer(
402402 subnetID = id
403403 }
404404 for _ , node := range nodes {
405- newNodeOpts := l .buildNodeBalancerNodeConfigRebuildOptions (node , port .NodePort , subnetID )
405+ newNodeOpts , err := l .buildNodeBalancerNodeConfigRebuildOptions (node , port .NodePort , subnetID )
406+ if err != nil {
407+ return err
408+ }
409+
406410 oldNodeID , ok := oldNBNodeIDs [newNodeOpts .Address ]
407411 if ok {
408412 newNodeOpts .ID = oldNodeID
@@ -857,7 +861,12 @@ func (l *loadbalancers) buildLoadBalancerRequest(ctx context.Context, clusterNam
857861 createOpt := config .GetCreateOptions ()
858862
859863 for _ , n := range nodes {
860- createOpt .Nodes = append (createOpt .Nodes , l .buildNodeBalancerNodeConfigRebuildOptions (n , port .NodePort , subnetID ).NodeBalancerNodeCreateOptions )
864+ opts , err := l .buildNodeBalancerNodeConfigRebuildOptions (n , port .NodePort , subnetID )
865+ if err != nil {
866+ return nil , fmt .Errorf ("error creating NodeBalancer config: %w" , err )
867+ }
868+
869+ createOpt .Nodes = append (createOpt .Nodes , opts .NodeBalancerNodeCreateOptions )
861870 }
862871
863872 configs = append (configs , & createOpt )
@@ -877,10 +886,14 @@ func coerceString(str string, minLen, maxLen int, padding string) string {
877886 return str
878887}
879888
880- func (l * loadbalancers ) buildNodeBalancerNodeConfigRebuildOptions (node * v1.Node , nodePort int32 , subnetID int ) linodego.NodeBalancerConfigRebuildNodeOptions {
889+ func (l * loadbalancers ) buildNodeBalancerNodeConfigRebuildOptions (node * v1.Node , nodePort int32 , subnetID int ) (linodego.NodeBalancerConfigRebuildNodeOptions , error ) {
890+ privateIP , err := getNodePrivateIP (node , subnetID )
891+ if err != nil {
892+ return linodego.NodeBalancerConfigRebuildNodeOptions {}, err
893+ }
881894 nodeOptions := linodego.NodeBalancerConfigRebuildNodeOptions {
882895 NodeBalancerNodeCreateOptions : linodego.NodeBalancerNodeCreateOptions {
883- Address : fmt .Sprintf ("%v:%v" , getNodePrivateIP ( node , subnetID ) , nodePort ),
896+ Address : fmt .Sprintf ("%v:%v" , privateIP , nodePort ),
884897 // NodeBalancer backends must be 3-32 chars in length
885898 // If < 3 chars, pad node name with "node-" prefix
886899 Label : coerceString (node .Name , 3 , 32 , "node-" ),
@@ -891,7 +904,7 @@ func (l *loadbalancers) buildNodeBalancerNodeConfigRebuildOptions(node *v1.Node,
891904 if subnetID != 0 {
892905 nodeOptions .NodeBalancerNodeCreateOptions .SubnetID = subnetID
893906 }
894- return nodeOptions
907+ return nodeOptions , nil
895908}
896909
897910func (l * loadbalancers ) retrieveKubeClient () error {
@@ -1004,20 +1017,20 @@ func getPortConfigAnnotation(service *v1.Service, port int) (portConfigAnnotatio
10041017// For services which don't have NodeBalancerBackendIPv4Range annotation,
10051018// Backend IP can be overwritten to the one specified using AnnLinodeNodePrivateIP
10061019// annotation over the NodeInternalIP.
1007- func getNodePrivateIP (node * v1.Node , subnetID int ) string {
1020+ func getNodePrivateIP (node * v1.Node , subnetID int ) ( string , error ) {
10081021 if subnetID == 0 {
10091022 if address , exists := node .Annotations [annotations .AnnLinodeNodePrivateIP ]; exists {
1010- return address
1023+ return address , nil
10111024 }
10121025 }
10131026
10141027 klog .Infof ("Node %s, assigned IP addresses: %v" , node .Name , node .Status .Addresses )
10151028 for _ , addr := range node .Status .Addresses {
10161029 if addr .Type == v1 .NodeInternalIP {
1017- return addr .Address
1030+ return addr .Address , nil
10181031 }
10191032 }
1020- return ""
1033+ return "" , fmt . Errorf ( "node %s has no internal IP or %s annotation" , node . Name , annotations . AnnLinodeNodePrivateIP )
10211034}
10221035
10231036func getTLSCertInfo (ctx context.Context , kubeClient kubernetes.Interface , namespace string , config portConfig ) (string , string , error ) {
0 commit comments