|
23 | 23 | package resources |
24 | 24 |
|
25 | 25 | import ( |
| 26 | + "strings" |
26 | 27 | "time" |
27 | 28 |
|
28 | 29 | v1 "k8s.io/api/core/v1" |
@@ -143,7 +144,9 @@ func (r *Resources) ensureExternalAccessServices(svcs k8sutil.ServiceInterface, |
143 | 144 | eaServiceType := spec.GetType().AsServiceType() // Note: Type auto defaults to ServiceTypeLoadBalancer |
144 | 145 | if existing, err := svcs.Get(eaServiceName, metav1.GetOptions{}); err == nil { |
145 | 146 | // External access service exists |
| 147 | + updateExternalAccessService := false |
146 | 148 | loadBalancerIP := spec.GetLoadBalancerIP() |
| 149 | + loadBalancerSourceRanges := spec.LoadBalancerSourceRanges |
147 | 150 | nodePort := spec.GetNodePort() |
148 | 151 | if spec.GetType().IsNone() { |
149 | 152 | if noneIsClusterIP { |
@@ -179,12 +182,22 @@ func (r *Resources) ensureExternalAccessServices(svcs k8sutil.ServiceInterface, |
179 | 182 | deleteExternalAccessService = true // Remove the current and replace with proper one |
180 | 183 | createExternalAccessService = true |
181 | 184 | } |
| 185 | + if strings.Join(existing.Spec.LoadBalancerSourceRanges, ",") != strings.Join(loadBalancerSourceRanges, ",") { |
| 186 | + updateExternalAccessService = true |
| 187 | + existing.Spec.LoadBalancerSourceRanges = loadBalancerSourceRanges |
| 188 | + } |
182 | 189 | } else if spec.GetType().IsNodePort() { |
183 | 190 | if existing.Spec.Type != v1.ServiceTypeNodePort || len(existing.Spec.Ports) != 1 || (nodePort != 0 && existing.Spec.Ports[0].NodePort != int32(nodePort)) { |
184 | 191 | deleteExternalAccessService = true // Remove the current and replace with proper one |
185 | 192 | createExternalAccessService = true |
186 | 193 | } |
187 | 194 | } |
| 195 | + if updateExternalAccessService && !createExternalAccessService && !deleteExternalAccessService { |
| 196 | + if _, err := svcs.Update(existing); err != nil { |
| 197 | + log.Debug().Err(err).Msgf("Failed to update %s external access service", title) |
| 198 | + return maskAny(err) |
| 199 | + } |
| 200 | + } |
188 | 201 | } else if k8sutil.IsNotFound(err) { |
189 | 202 | // External access service does not exist |
190 | 203 | if !spec.GetType().IsNone() || noneIsClusterIP { |
|
0 commit comments