@@ -62,7 +62,7 @@ func NewStatefulSetForCR(cluster *redisv1alpha1.DistributedRedisCluster, ssName,
6262 },
6363 Spec : corev1.PodSpec {
6464 ImagePullSecrets : cluster .Spec .ImagePullSecrets ,
65- Affinity : getAffinity (spec . Affinity , labels ),
65+ Affinity : getAffinity (cluster , labels ),
6666 Tolerations : spec .ToleRations ,
6767 SecurityContext : spec .SecurityContext ,
6868 NodeSelector : cluster .Spec .NodeSelector ,
@@ -97,11 +97,37 @@ func NewStatefulSetForCR(cluster *redisv1alpha1.DistributedRedisCluster, ssName,
9797 return ss , nil
9898}
9999
100- 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
101102 if affinity != nil {
102103 return affinity
103104 }
104105
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+ }
105131 // return a SOFT anti-affinity by default
106132 return & corev1.Affinity {
107133 PodAntiAffinity : & corev1.PodAntiAffinity {
@@ -111,7 +137,7 @@ func getAffinity(affinity *corev1.Affinity, labels map[string]string) *corev1.Af
111137 PodAffinityTerm : corev1.PodAffinityTerm {
112138 TopologyKey : hostnameTopologyKey ,
113139 LabelSelector : & metav1.LabelSelector {
114- MatchLabels : labels ,
140+ MatchLabels : map [ string ] string { redisv1alpha1 . LabelClusterName : cluster . Name } ,
115141 },
116142 },
117143 },
0 commit comments