mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	Skip creating HNS loadbalancer with empty endpoints
This commit is contained in:
		@@ -1240,22 +1240,27 @@ func (proxier *Proxier) syncProxyRules() {
 | 
				
			|||||||
			if svcInfo.preserveDIP || svcInfo.localTrafficDSR {
 | 
								if svcInfo.preserveDIP || svcInfo.localTrafficDSR {
 | 
				
			||||||
				nodePortEndpoints = hnsLocalEndpoints
 | 
									nodePortEndpoints = hnsLocalEndpoints
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			hnsLoadBalancer, err := hns.getLoadBalancer(
 | 
					 | 
				
			||||||
				nodePortEndpoints,
 | 
					 | 
				
			||||||
				loadBalancerFlags{isDSR: svcInfo.localTrafficDSR, localRoutedVIP: true, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
 | 
					 | 
				
			||||||
				sourceVip,
 | 
					 | 
				
			||||||
				"",
 | 
					 | 
				
			||||||
				Enum(svcInfo.Protocol()),
 | 
					 | 
				
			||||||
				uint16(svcInfo.targetPort),
 | 
					 | 
				
			||||||
				uint16(svcInfo.NodePort()),
 | 
					 | 
				
			||||||
			)
 | 
					 | 
				
			||||||
			if err != nil {
 | 
					 | 
				
			||||||
				klog.ErrorS(err, "Policy creation failed")
 | 
					 | 
				
			||||||
				continue
 | 
					 | 
				
			||||||
			}
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
			svcInfo.nodePorthnsID = hnsLoadBalancer.hnsID
 | 
								if len(nodePortEndpoints) > 0 {
 | 
				
			||||||
			klog.V(3).InfoS("Hns LoadBalancer resource created for nodePort resources", "clusterIP", svcInfo.ClusterIP(), "hnsID", hnsLoadBalancer.hnsID)
 | 
									hnsLoadBalancer, err := hns.getLoadBalancer(
 | 
				
			||||||
 | 
										nodePortEndpoints,
 | 
				
			||||||
 | 
										loadBalancerFlags{isDSR: svcInfo.localTrafficDSR, localRoutedVIP: true, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
 | 
				
			||||||
 | 
										sourceVip,
 | 
				
			||||||
 | 
										"",
 | 
				
			||||||
 | 
										Enum(svcInfo.Protocol()),
 | 
				
			||||||
 | 
										uint16(svcInfo.targetPort),
 | 
				
			||||||
 | 
										uint16(svcInfo.NodePort()),
 | 
				
			||||||
 | 
									)
 | 
				
			||||||
 | 
									if err != nil {
 | 
				
			||||||
 | 
										klog.ErrorS(err, "Policy creation failed")
 | 
				
			||||||
 | 
										continue
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									svcInfo.nodePorthnsID = hnsLoadBalancer.hnsID
 | 
				
			||||||
 | 
									klog.V(3).InfoS("Hns LoadBalancer resource created for nodePort resources", "clusterIP", svcInfo.ClusterIP(), "nodeport", svcInfo.NodePort(), "hnsID", hnsLoadBalancer.hnsID)
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									klog.V(3).InfoS("Skipped creating Hns LoadBalancer for nodePort resources", "clusterIP", svcInfo.ClusterIP(), "nodeport", svcInfo.NodePort(), "hnsID", hnsLoadBalancer.hnsID)
 | 
				
			||||||
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		// Create a Load Balancer Policy for each external IP
 | 
							// Create a Load Balancer Policy for each external IP
 | 
				
			||||||
@@ -1265,22 +1270,27 @@ func (proxier *Proxier) syncProxyRules() {
 | 
				
			|||||||
			if svcInfo.localTrafficDSR {
 | 
								if svcInfo.localTrafficDSR {
 | 
				
			||||||
				externalIPEndpoints = hnsLocalEndpoints
 | 
									externalIPEndpoints = hnsLocalEndpoints
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			// Try loading existing policies, if already available
 | 
					
 | 
				
			||||||
			hnsLoadBalancer, err = hns.getLoadBalancer(
 | 
								if len(externalIPEndpoints) > 0 {
 | 
				
			||||||
				externalIPEndpoints,
 | 
									// Try loading existing policies, if already available
 | 
				
			||||||
				loadBalancerFlags{isDSR: svcInfo.localTrafficDSR, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
 | 
									hnsLoadBalancer, err = hns.getLoadBalancer(
 | 
				
			||||||
				sourceVip,
 | 
										externalIPEndpoints,
 | 
				
			||||||
				externalIP.ip,
 | 
										loadBalancerFlags{isDSR: svcInfo.localTrafficDSR, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
 | 
				
			||||||
				Enum(svcInfo.Protocol()),
 | 
										sourceVip,
 | 
				
			||||||
				uint16(svcInfo.targetPort),
 | 
										externalIP.ip,
 | 
				
			||||||
				uint16(svcInfo.Port()),
 | 
										Enum(svcInfo.Protocol()),
 | 
				
			||||||
			)
 | 
										uint16(svcInfo.targetPort),
 | 
				
			||||||
			if err != nil {
 | 
										uint16(svcInfo.Port()),
 | 
				
			||||||
				klog.ErrorS(err, "Policy creation failed")
 | 
									)
 | 
				
			||||||
				continue
 | 
									if err != nil {
 | 
				
			||||||
 | 
										klog.ErrorS(err, "Policy creation failed")
 | 
				
			||||||
 | 
										continue
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									externalIP.hnsID = hnsLoadBalancer.hnsID
 | 
				
			||||||
 | 
									klog.V(3).InfoS("Hns LoadBalancer resource created for externalIP resources", "externalIP", externalIP, "hnsID", hnsLoadBalancer.hnsID)
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									klog.V(3).InfoS("Skipped creating Hns LoadBalancer for externalIP resources", "externalIP", externalIP, "hnsID", hnsLoadBalancer.hnsID)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			externalIP.hnsID = hnsLoadBalancer.hnsID
 | 
					 | 
				
			||||||
			klog.V(3).InfoS("Hns LoadBalancer resource created for externalIP resources", "externalIP", externalIP, "hnsID", hnsLoadBalancer.hnsID)
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		// Create a Load Balancer Policy for each loadbalancer ingress
 | 
							// Create a Load Balancer Policy for each loadbalancer ingress
 | 
				
			||||||
		for _, lbIngressIP := range svcInfo.loadBalancerIngressIPs {
 | 
							for _, lbIngressIP := range svcInfo.loadBalancerIngressIPs {
 | 
				
			||||||
@@ -1289,21 +1299,27 @@ func (proxier *Proxier) syncProxyRules() {
 | 
				
			|||||||
			if svcInfo.preserveDIP || svcInfo.localTrafficDSR {
 | 
								if svcInfo.preserveDIP || svcInfo.localTrafficDSR {
 | 
				
			||||||
				lbIngressEndpoints = hnsLocalEndpoints
 | 
									lbIngressEndpoints = hnsLocalEndpoints
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			hnsLoadBalancer, err := hns.getLoadBalancer(
 | 
					
 | 
				
			||||||
				lbIngressEndpoints,
 | 
								if len(lbIngressEndpoints) > 0 {
 | 
				
			||||||
				loadBalancerFlags{isDSR: svcInfo.preserveDIP || svcInfo.localTrafficDSR, useMUX: svcInfo.preserveDIP, preserveDIP: svcInfo.preserveDIP, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
 | 
									hnsLoadBalancer, err := hns.getLoadBalancer(
 | 
				
			||||||
				sourceVip,
 | 
										lbIngressEndpoints,
 | 
				
			||||||
				lbIngressIP.ip,
 | 
										loadBalancerFlags{isDSR: svcInfo.preserveDIP || svcInfo.localTrafficDSR, useMUX: svcInfo.preserveDIP, preserveDIP: svcInfo.preserveDIP, sessionAffinity: sessionAffinityClientIP, isIPv6: proxier.isIPv6Mode},
 | 
				
			||||||
				Enum(svcInfo.Protocol()),
 | 
										sourceVip,
 | 
				
			||||||
				uint16(svcInfo.targetPort),
 | 
										lbIngressIP.ip,
 | 
				
			||||||
				uint16(svcInfo.Port()),
 | 
										Enum(svcInfo.Protocol()),
 | 
				
			||||||
			)
 | 
										uint16(svcInfo.targetPort),
 | 
				
			||||||
			if err != nil {
 | 
										uint16(svcInfo.Port()),
 | 
				
			||||||
				klog.ErrorS(err, "Policy creation failed")
 | 
									)
 | 
				
			||||||
				continue
 | 
									if err != nil {
 | 
				
			||||||
 | 
										klog.ErrorS(err, "Policy creation failed")
 | 
				
			||||||
 | 
										continue
 | 
				
			||||||
 | 
									}
 | 
				
			||||||
 | 
									lbIngressIP.hnsID = hnsLoadBalancer.hnsID
 | 
				
			||||||
 | 
									klog.V(3).InfoS("Hns LoadBalancer resource created for loadBalancer Ingress resources", "lbIngressIP", lbIngressIP)
 | 
				
			||||||
 | 
								} else {
 | 
				
			||||||
 | 
									klog.V(3).InfoS("Skipped creating Hns LoadBalancer for loadBalancer Ingress resources", "lbIngressIP", lbIngressIP)
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
			lbIngressIP.hnsID = hnsLoadBalancer.hnsID
 | 
					
 | 
				
			||||||
			klog.V(3).InfoS("Hns LoadBalancer resource created for loadBalancer Ingress resources", "lbIngressIP", lbIngressIP)
 | 
					 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		svcInfo.policyApplied = true
 | 
							svcInfo.policyApplied = true
 | 
				
			||||||
		klog.V(2).InfoS("Policy successfully applied for service", "serviceInfo", svcInfo)
 | 
							klog.V(2).InfoS("Policy successfully applied for service", "serviceInfo", svcInfo)
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user