@@ -24,6 +24,7 @@ const (
2424 redisRestoreLocalVolumeName = "redis-local"
2525 redisServerName = "redis"
2626 hostnameTopologyKey = "kubernetes.io/hostname"
27+ ExporterContainerName = "exporter"
2728
2829 graceTime = 30
2930
@@ -61,7 +62,7 @@ func NewStatefulSetForCR(cluster *redisv1alpha1.DistributedRedisCluster, ssName,
6162 },
6263 Spec : corev1.PodSpec {
6364 ImagePullSecrets : cluster .Spec .ImagePullSecrets ,
64- Affinity : getAffinity (spec . Affinity , labels ),
65+ Affinity : getAffinity (cluster , labels ),
6566 Tolerations : spec .ToleRations ,
6667 SecurityContext : spec .SecurityContext ,
6768 NodeSelector : cluster .Spec .NodeSelector ,
@@ -96,11 +97,37 @@ func NewStatefulSetForCR(cluster *redisv1alpha1.DistributedRedisCluster, ssName,
9697 return ss , nil
9798}
9899
99- func getAffinity (affinity * corev1.Affinity , labels map [string ]string ) * corev1.Affinity {
100+ func getAffinity (cluster * redisv1alpha1.DistributedRedisCluster , labels map [string ]string ) * corev1.Affinity {
101+ affinity := cluster .Spec .Affinity
100102 if affinity != nil {
101103 return affinity
102104 }
103105
106+ if cluster .Spec .RequiredAntiAffinity {
107+ return & corev1.Affinity {
108+ PodAntiAffinity : & corev1.PodAntiAffinity {
109+ PreferredDuringSchedulingIgnoredDuringExecution : []corev1.WeightedPodAffinityTerm {
110+ {
111+ Weight : 100 ,
112+ PodAffinityTerm : corev1.PodAffinityTerm {
113+ TopologyKey : hostnameTopologyKey ,
114+ LabelSelector : & metav1.LabelSelector {
115+ MatchLabels : map [string ]string {redisv1alpha1 .LabelClusterName : cluster .Name },
116+ },
117+ },
118+ },
119+ },
120+ RequiredDuringSchedulingIgnoredDuringExecution : []corev1.PodAffinityTerm {
121+ {
122+ TopologyKey : hostnameTopologyKey ,
123+ LabelSelector : & metav1.LabelSelector {
124+ MatchLabels : labels ,
125+ },
126+ },
127+ },
128+ },
129+ }
130+ }
104131 // return a SOFT anti-affinity by default
105132 return & corev1.Affinity {
106133 PodAntiAffinity : & corev1.PodAntiAffinity {
@@ -110,7 +137,7 @@ func getAffinity(affinity *corev1.Affinity, labels map[string]string) *corev1.Af
110137 PodAffinityTerm : corev1.PodAffinityTerm {
111138 TopologyKey : hostnameTopologyKey ,
112139 LabelSelector : & metav1.LabelSelector {
113- MatchLabels : labels ,
140+ MatchLabels : map [ string ] string { redisv1alpha1 . LabelClusterName : cluster . Name } ,
114141 },
115142 },
116143 },
@@ -282,7 +309,7 @@ func redisServerContainer(cluster *redisv1alpha1.DistributedRedisCluster, passwo
282309
283310func redisExporterContainer (cluster * redisv1alpha1.DistributedRedisCluster , password * corev1.EnvVar ) corev1.Container {
284311 container := corev1.Container {
285- Name : "exporter" ,
312+ Name : ExporterContainerName ,
286313 Args : append ([]string {
287314 fmt .Sprintf ("--web.listen-address=:%v" , cluster .Spec .Monitor .Prometheus .Port ),
288315 fmt .Sprintf ("--web.telemetry-path=%v" , redisv1alpha1 .PrometheusExporterTelemetryPath ),
0 commit comments