Enable backward compatibility for enable_load_balancer setting from operator configmap
This commit is contained in:
		
							parent
							
								
									931b48fcbb
								
							
						
					
					
						commit
						a8862aeee1
					
				| 
						 | 
				
			
			@ -239,6 +239,8 @@ For any Postgresql/Spilo cluster an operator creates two separate k8s services:
 | 
			
		|||
 | 
			
		||||
For backward compatibility with already configured clusters we maintain in a cluster manifest older parameter names, namely `useLoadBalancer` for enabling the master service's load balancer and `replicaLoadBalancer` for the replica service. If set, these params take precedence over the newer `enableMasterLoadBalancer` and `enableReplicaLoadBalancer`. Note that in older versions of the operator (before PR #258) `replicaLoadBalancer` was responsible for both creating the replica service and attaching an LB to it; now the service is always created (since k8s service typically is free in the cloud setting), and this param only attaches an LB (that typically costs money).
 | 
			
		||||
 | 
			
		||||
For the same reason of compatibility, we maintain the `enable_load_balancer` setting in the operator config map that was previously used to attach a LB to the master service. Its value is examined after the deprecated `useLoadBalancer` setting from the Postgresql manifest but before the recommended `enableMasterLoadBalancer`. There is no equivalent option for the replica service since the service used to be always created with a load balancer.
 | 
			
		||||
 | 
			
		||||
# Setup development environment
 | 
			
		||||
 | 
			
		||||
The following steps guide you through the setup to work on the operator itself.
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -36,7 +36,9 @@ data:
 | 
			
		|||
  team_admin_role: "admin"
 | 
			
		||||
  teams_api_url: http://fake-teams-api.default.svc.cluster.local
 | 
			
		||||
  workers: "4"
 | 
			
		||||
  enable_master_load_balancer: "true"
 | 
			
		||||
  # turn on/off load balancers for all Postgres clusters managed by the operator
 | 
			
		||||
  # LB settings in cluster manifests take priority over these settings
 | 
			
		||||
  # enable_master_load_balancer: "true"
 | 
			
		||||
  # enable_replica_load_balancer: "true"
 | 
			
		||||
  api_port: "8080"
 | 
			
		||||
  ring_log_lines: "100"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -696,8 +696,11 @@ func (c *Cluster) shouldCreateLoadBalancerForService(role PostgresRole, spec *sp
 | 
			
		|||
			return *spec.UseLoadBalancer
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if spec.EnableMasterLoadBalancer != nil {
 | 
			
		||||
			return *spec.EnableMasterLoadBalancer
 | 
			
		||||
		// `enable_load_balancer`` governs LB for a master service
 | 
			
		||||
		// there is no equivalent operator configmap option for the replica LB
 | 
			
		||||
		if c.OpConfig.EnableLoadBalancer != nil {
 | 
			
		||||
			c.logger.Debugf("The operator configmap sets the deprecated `enable_load_balancer` param. Consider using the `enable_master_load_balancer` or `enable_replica_load_balancer` instead.", c.Name)
 | 
			
		||||
			return *c.OpConfig.EnableLoadBalancer
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return c.OpConfig.EnableMasterLoadBalancer
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -82,6 +82,8 @@ type Config struct {
 | 
			
		|||
	TeamAdminRole             string `name:"team_admin_role" default:"admin"`
 | 
			
		||||
	EnableMasterLoadBalancer  bool   `name:"enable_master_load_balancer" default:"false"`
 | 
			
		||||
	EnableReplicaLoadBalancer bool   `name:"enable_replica_load_balancer" default:"false"`
 | 
			
		||||
	// deprecated and kept for backward compatibility
 | 
			
		||||
	EnableLoadBalancer       *bool             `name:"enable_load_balancer" default:"true"`
 | 
			
		||||
	MasterDNSNameFormat      stringTemplate    `name:"master_dns_name_format" default:"{cluster}.{team}.{hostedzone}"`
 | 
			
		||||
	ReplicaDNSNameFormat     stringTemplate    `name:"replica_dns_name_format" default:"{cluster}-repl.{team}.{hostedzone}"`
 | 
			
		||||
	PDBNameFormat            stringTemplate    `name:"pdb_name_format" default:"postgres-{cluster}-pdb"`
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue