Make ReplicaLoadBalancer a separate toggler
This commit is contained in:
		
							parent
							
								
									18741750f5
								
							
						
					
					
						commit
						2aeff096f7
					
				|  | @ -478,8 +478,7 @@ func (c *Cluster) Update(oldSpec, newSpec *spec.Postgresql) error { | |||
| 
 | ||||
| 	// Service
 | ||||
| 	if !reflect.DeepEqual(c.generateService(Master, &oldSpec.Spec), c.generateService(Master, &newSpec.Spec)) || | ||||
| 		!reflect.DeepEqual(c.generateService(Replica, &oldSpec.Spec), c.generateService(Replica, &newSpec.Spec)) || | ||||
| 		oldSpec.Spec.ReplicaLoadBalancer != newSpec.Spec.ReplicaLoadBalancer { | ||||
| 		!reflect.DeepEqual(c.generateService(Replica, &oldSpec.Spec), c.generateService(Replica, &newSpec.Spec)) { | ||||
| 		c.logger.Debugf("syncing services") | ||||
| 		if err := c.syncServices(); err != nil { | ||||
| 			c.logger.Errorf("could not sync services: %v", err) | ||||
|  |  | |||
|  | @ -669,6 +669,20 @@ func (c *Cluster) generateSingleUserSecret(namespace string, pgUser spec.PgUser) | |||
| 	return &secret | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) shouldCreateLoadBalancerForService(role PostgresRole, spec *spec.PostgresSpec) bool { | ||||
| 
 | ||||
| 	// handle LB for the replica service separately if ReplicaLoadBalancer is set in the Postgres manifest
 | ||||
| 	if role == Replica && spec.ReplicaLoadBalancer != nil { | ||||
| 		return *spec.ReplicaLoadBalancer | ||||
| 	} | ||||
| 
 | ||||
| 	// create a load balancer for the master service if either Postgres or operator manifests tell to do so
 | ||||
| 	// if ReplicaLoadBalancer is unset and LB for master service is created, also create a balancer for replicas
 | ||||
| 	return (spec.UseLoadBalancer != nil && *spec.UseLoadBalancer) || | ||||
| 		(spec.UseLoadBalancer == nil && c.OpConfig.EnableLoadBalancer) | ||||
| 
 | ||||
| } | ||||
| 
 | ||||
| func (c *Cluster) generateService(role PostgresRole, spec *spec.PostgresSpec) *v1.Service { | ||||
| 	var dnsName string | ||||
| 
 | ||||
|  | @ -689,12 +703,12 @@ func (c *Cluster) generateService(role PostgresRole, spec *spec.PostgresSpec) *v | |||
| 
 | ||||
| 	var annotations map[string]string | ||||
| 
 | ||||
| 	// Examine the per-cluster load balancer setting, if it is not defined - check the operator configuration.
 | ||||
| 	if (spec.UseLoadBalancer != nil && *spec.UseLoadBalancer) || | ||||
| 		(spec.UseLoadBalancer == nil && c.OpConfig.EnableLoadBalancer) { | ||||
| 	if c.shouldCreateLoadBalancerForService(role, spec) == true { | ||||
| 
 | ||||
| 		// safe default value: lock load balancer to only local address unless overridden explicitly.
 | ||||
| 		sourceRanges := []string{localHost} | ||||
| 
 | ||||
| 		// source ranges are the same for balancers for master and replica services
 | ||||
| 		allowedSourceRanges := spec.AllowedSourceRanges | ||||
| 		if len(allowedSourceRanges) >= 0 { | ||||
| 			sourceRanges = allowedSourceRanges | ||||
|  |  | |||
		Loading…
	
		Reference in New Issue