Properly overwrite empty allowed source ranges for load balancers
This commit is contained in:
parent
688d252752
commit
41c0c547a5
|
|
@ -198,7 +198,9 @@ services to an outer network, one can attach load balancers to them by setting
|
||||||
cluster manifest. In the case any of these variables are omitted from the
|
cluster manifest. In the case any of these variables are omitted from the
|
||||||
manifest, the operator configmap's settings `enable_master_load_balancer` and
|
manifest, the operator configmap's settings `enable_master_load_balancer` and
|
||||||
`enable_replica_load_balancer` apply. Note that the operator settings affect
|
`enable_replica_load_balancer` apply. Note that the operator settings affect
|
||||||
all Postgresql services running in a namespace watched by the operator.
|
all Postgresql services running in all namespaces watched by the operator.
|
||||||
|
|
||||||
|
To limit the range of IP adresses that can reach a load balancer, speficy the desired ranges in the `allowedSourceRanges` field (applies to both master and replica LBs). To prevent exposing LBs to the entire Internet, this field is set by default to `127.0.0.1/32`. To return to this default, explicitly set the field to the empty sequence `[]`; setting it to `null` or omitting entirely may not work due to [k8s handling of null fields](https://kubernetes.io/docs/concepts/overview/object-management-kubectl/declarative-config/#how-apply-calculates-differences-and-merges-changes).
|
||||||
|
|
||||||
## Running periodic 'autorepair' scans of Kubernetes objects
|
## Running periodic 'autorepair' scans of Kubernetes objects
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -961,13 +961,15 @@ func (c *Cluster) generateService(role PostgresRole, spec *acidv1.PostgresSpec)
|
||||||
// safe default value: lock load balancer to only local address unless overridden explicitly.
|
// safe default value: lock load balancer to only local address unless overridden explicitly.
|
||||||
sourceRanges := []string{localHost}
|
sourceRanges := []string{localHost}
|
||||||
|
|
||||||
allowedSourceRanges := spec.AllowedSourceRanges
|
// spec.AllowedSourceRanges evaluates to the empty slice of zero length
|
||||||
if len(allowedSourceRanges) >= 0 {
|
// when omitted or set to 'null'/empty sequence in the PG manifest
|
||||||
sourceRanges = allowedSourceRanges
|
if len(spec.AllowedSourceRanges) > 0 {
|
||||||
|
sourceRanges = spec.AllowedSourceRanges
|
||||||
}
|
}
|
||||||
|
|
||||||
serviceSpec.Type = v1.ServiceTypeLoadBalancer
|
serviceSpec.Type = v1.ServiceTypeLoadBalancer
|
||||||
serviceSpec.LoadBalancerSourceRanges = sourceRanges
|
serviceSpec.LoadBalancerSourceRanges = sourceRanges
|
||||||
|
c.logger.Debugf("final load balancer source ranges as seen in a service spec (not necessarily applied): %q", serviceSpec.LoadBalancerSourceRanges)
|
||||||
|
|
||||||
annotations = map[string]string{
|
annotations = map[string]string{
|
||||||
constants.ZalandoDNSNameAnnotation: dnsName,
|
constants.ZalandoDNSNameAnnotation: dnsName,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue