Implement backward compatibility with older load balancer settings
This commit is contained in:
parent
145689c950
commit
386d7b6bdb
|
|
@ -237,6 +237,8 @@ For instance, of a cluster manifest has 1 instance and the min_instances is set
|
||||||
|
|
||||||
For any Postgresql/Spilo cluster an operator creates two separate k8s services: one for the master pod and one for replica pods. To expose these services to an outer network, one can attach load balancers to them by setting `enableMasterLoadBalancer` and/or `enableReplicaLoadBalancer` to `true` in the cluster manifest. In the case any of these variables is omitted from the manifest, the operator configmap's settings `enable_master_load_balancer` and `enable_replica_load_balancer` apply. Note that the operator settings affect all Postgresql services running in a namespace watched by the operator.
|
For any Postgresql/Spilo cluster an operator creates two separate k8s services: one for the master pod and one for replica pods. To expose these services to an outer network, one can attach load balancers to them by setting `enableMasterLoadBalancer` and/or `enableReplicaLoadBalancer` to `true` in the cluster manifest. In the case any of these variables is omitted from the manifest, the operator configmap's settings `enable_master_load_balancer` and `enable_replica_load_balancer` apply. Note that the operator settings affect all Postgresql services running in a namespace watched by the operator.
|
||||||
|
|
||||||
|
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).
|
||||||
|
|
||||||
# Setup development environment
|
# Setup development environment
|
||||||
|
|
||||||
The following steps guide you through the setup to work on the operator itself.
|
The following steps guide you through the setup to work on the operator itself.
|
||||||
|
|
|
||||||
|
|
@ -675,18 +675,31 @@ func (c *Cluster) shouldCreateLoadBalancerForService(role PostgresRole, spec *sp
|
||||||
|
|
||||||
case Replica:
|
case Replica:
|
||||||
|
|
||||||
|
// deprecated option takes priority for backward compatibility
|
||||||
|
if spec.ReplicaLoadBalancer != nil {
|
||||||
|
c.logger.Debugf("The Postgres manifest for the cluster %v sets the deprecated `replicaLoadBalancer` param. Consider using the `enableReplicaLoadBalancer` instead.", c.Name)
|
||||||
|
return *spec.ReplicaLoadBalancer
|
||||||
|
}
|
||||||
|
|
||||||
// if the value is explicitly set in a Postgresql manifest, follow this setting
|
// if the value is explicitly set in a Postgresql manifest, follow this setting
|
||||||
if spec.EnableReplicaLoadBalancer != nil {
|
if spec.EnableReplicaLoadBalancer != nil {
|
||||||
return *spec.EnableReplicaLoadBalancer
|
return *spec.EnableReplicaLoadBalancer
|
||||||
}
|
}
|
||||||
|
|
||||||
// otherwise, follow the operator configuration
|
// otherwise, follow the operator configuration
|
||||||
return c.OpConfig.EnableReplicaLoadBalancer
|
return c.OpConfig.EnableReplicaLoadBalancer
|
||||||
|
|
||||||
case Master:
|
case Master:
|
||||||
|
|
||||||
|
if spec.UseLoadBalancer != nil {
|
||||||
|
c.logger.Debugf("The Postgres manifest for the cluster %v sets the deprecated `useLoadBalancer` param. Consider using the `enableMasterLoadBalancer` instead.", c.Name)
|
||||||
|
return *spec.UseLoadBalancer
|
||||||
|
}
|
||||||
|
|
||||||
if spec.EnableMasterLoadBalancer != nil {
|
if spec.EnableMasterLoadBalancer != nil {
|
||||||
return *spec.EnableMasterLoadBalancer
|
return *spec.EnableMasterLoadBalancer
|
||||||
}
|
}
|
||||||
|
|
||||||
return c.OpConfig.EnableMasterLoadBalancer
|
return c.OpConfig.EnableMasterLoadBalancer
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
|
|
||||||
|
|
@ -96,10 +96,17 @@ type PostgresSpec struct {
|
||||||
TeamID string `json:"teamId"`
|
TeamID string `json:"teamId"`
|
||||||
AllowedSourceRanges []string `json:"allowedSourceRanges"`
|
AllowedSourceRanges []string `json:"allowedSourceRanges"`
|
||||||
DockerImage string `json:"dockerImage,omitempty"`
|
DockerImage string `json:"dockerImage,omitempty"`
|
||||||
|
|
||||||
// vars that enable load balancers are pointers because it is important to know if any of them is omitted from the Postgres manifest
|
// vars that enable load balancers are pointers because it is important to know if any of them is omitted from the Postgres manifest
|
||||||
// in that case the var evaluates to nil and the value is taken from the operator config
|
// in that case the var evaluates to nil and the value is taken from the operator config
|
||||||
EnableMasterLoadBalancer *bool `json:"enableMasterLoadBalancer,omitempty"`
|
EnableMasterLoadBalancer *bool `json:"enableMasterLoadBalancer,omitempty"`
|
||||||
EnableReplicaLoadBalancer *bool `json:"enableReplicaLoadBalancer,omitempty"`
|
EnableReplicaLoadBalancer *bool `json:"enableReplicaLoadBalancer,omitempty"`
|
||||||
|
|
||||||
|
// deprecated load balancer settings mantained for backward compatibility
|
||||||
|
// see "Load balancers" operator docs (PR #258)
|
||||||
|
UseLoadBalancer *bool `json:"useLoadBalancer,omitempty"`
|
||||||
|
ReplicaLoadBalancer *bool `json:"replicaLoadBalancer,omitempty"`
|
||||||
|
|
||||||
NumberOfInstances int32 `json:"numberOfInstances"`
|
NumberOfInstances int32 `json:"numberOfInstances"`
|
||||||
Users map[string]UserFlags `json:"users"`
|
Users map[string]UserFlags `json:"users"`
|
||||||
MaintenanceWindows []MaintenanceWindow `json:"maintenanceWindows,omitempty"`
|
MaintenanceWindows []MaintenanceWindow `json:"maintenanceWindows,omitempty"`
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue