diff -Nruw --exclude .git --exclude '.*.swp' build/postgres-operator.org/pkg/cluster/connection_pooler.go build/postgres-operator/pkg/cluster/connection_pooler.go --- build/postgres-operator.org/pkg/cluster/connection_pooler.go 2021-04-21 16:28:19.000000000 +0200 +++ build/postgres-operator/pkg/cluster/connection_pooler.go 2021-05-17 21:24:06.000000000 +0200 @@ -285,6 +285,8 @@ }, } + tolerationsSpec := tolerations(&spec.Tolerations, c.OpConfig.PodToleration) + podTemplate := &v1.PodTemplateSpec{ ObjectMeta: metav1.ObjectMeta{ Labels: c.connectionPoolerLabels(role, true).MatchLabels, @@ -294,12 +296,18 @@ Spec: v1.PodSpec{ TerminationGracePeriodSeconds: &gracePeriod, Containers: []v1.Container{poolerContainer}, - // TODO: add tolerations to scheduler pooler on the same node - // as database - //Tolerations: *tolerationsSpec, + Tolerations: tolerationsSpec, }, } + nodeAffinity := nodeAffinity(c.OpConfig.NodeReadinessLabel, spec.NodeAffinity) + if c.OpConfig.EnablePodAntiAffinity { + labelsSet := labels.Set(c.connectionPoolerLabels(role, false).MatchLabels) + podTemplate.Spec.Affinity = generatePodAffinity(labelsSet, c.OpConfig.PodAntiAffinityTopologyKey, nodeAffinity) + } else if nodeAffinity != nil { + podTemplate.Spec.Affinity = nodeAffinity + } + return podTemplate, nil }