handle LoadBalancer to NodePort service type transition

This commit is contained in:
Jociele Padilha
2026-06-02 17:09:21 +02:00
parent ad89524e2a
commit d9299d64aa
+9 -1
View File
@@ -324,7 +324,15 @@ func (c *Cluster) updateService(role PostgresRole, oldService *v1.Service, newSe
// patch does not work because of LoadBalancerSourceRanges field (even if set to nil)
oldServiceType := oldService.Spec.Type
newServiceType := newService.Spec.Type
if newServiceType == "ClusterIP" && newServiceType != oldServiceType {
if newServiceType != oldServiceType && oldServiceType == v1.ServiceTypeLoadBalancer {
// Kubernetes rejects updates that change type away from LoadBalancer while
// loadBalancerSourceRanges is still set; clear it before updating
newService.Spec.LoadBalancerSourceRanges = nil
newService.ResourceVersion = oldService.ResourceVersion
if newServiceType == v1.ServiceTypeClusterIP {
newService.Spec.ClusterIP = oldService.Spec.ClusterIP
}
} else if newServiceType == v1.ServiceTypeClusterIP && newServiceType != oldServiceType {
newService.ResourceVersion = oldService.ResourceVersion
newService.Spec.ClusterIP = oldService.Spec.ClusterIP
}