From 7f0d7b913a05c38c99efb134aaae23cf5975cae7 Mon Sep 17 00:00:00 2001 From: iamabhishek-dubey Date: Sat, 29 Oct 2022 17:29:41 +0530 Subject: [PATCH 1/2] Added logic for updating followers replicas Signed-off-by: iamabhishek-dubey --- controllers/rediscluster_controller.go | 28 ++++++++++++++------------ 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/controllers/rediscluster_controller.go b/controllers/rediscluster_controller.go index ea92efd03..73e375a6b 100644 --- a/controllers/rediscluster_controller.go +++ b/controllers/rediscluster_controller.go @@ -86,25 +86,27 @@ func (r *RedisClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request return ctrl.Result{}, err } - err = k8sutils.CreateRedisFollower(instance) + redisLeaderInfo, err := k8sutils.GetStatefulSet(instance.Namespace, instance.ObjectMeta.Name+"-leader") if err != nil { return ctrl.Result{}, err } - // if we have followers create their service. - if followerReplicas != 0 { - err = k8sutils.CreateRedisFollowerService(instance) + + if int32(redisLeaderInfo.Status.ReadyReplicas) == leaderReplicas { + err = k8sutils.CreateRedisFollower(instance) + if err != nil { + return ctrl.Result{}, err + } + // if we have followers create their service. + if followerReplicas != 0 { + err = k8sutils.CreateRedisFollowerService(instance) + if err != nil { + return ctrl.Result{}, err + } + } + err = k8sutils.ReconcileRedisPodDisruptionBudget(instance, "follower", instance.Spec.RedisFollower.PodDisruptionBudget) if err != nil { return ctrl.Result{}, err } - } - err = k8sutils.ReconcileRedisPodDisruptionBudget(instance, "follower", instance.Spec.RedisFollower.PodDisruptionBudget) - if err != nil { - return ctrl.Result{}, err - } - - redisLeaderInfo, err := k8sutils.GetStatefulSet(instance.Namespace, instance.ObjectMeta.Name+"-leader") - if err != nil { - return ctrl.Result{}, err } redisFollowerInfo, err := k8sutils.GetStatefulSet(instance.Namespace, instance.ObjectMeta.Name+"-follower") if err != nil { From a80be8a00d8c14835bdcf0693d6b2b0303092e03 Mon Sep 17 00:00:00 2001 From: iamabhishek-dubey Date: Sun, 30 Oct 2022 18:58:31 +0530 Subject: [PATCH 2/2] Fixed ctrl time for errors Signed-off-by: iamabhishek-dubey --- controllers/rediscluster_controller.go | 20 ++++++++++---------- example/eks-cluster.yaml | 11 ++++++++++- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/controllers/rediscluster_controller.go b/controllers/rediscluster_controller.go index 73e375a6b..c14306abf 100644 --- a/controllers/rediscluster_controller.go +++ b/controllers/rediscluster_controller.go @@ -63,54 +63,54 @@ func (r *RedisClusterReconciler) Reconcile(ctx context.Context, req ctrl.Request totalReplicas := leaderReplicas + followerReplicas if err := k8sutils.HandleRedisClusterFinalizer(instance, r.Client); err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } if err := k8sutils.AddRedisClusterFinalizer(instance, r.Client); err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } err = k8sutils.CreateRedisLeader(instance) if err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } if leaderReplicas != 0 { err = k8sutils.CreateRedisLeaderService(instance) if err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } } err = k8sutils.ReconcileRedisPodDisruptionBudget(instance, "leader", instance.Spec.RedisLeader.PodDisruptionBudget) if err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } redisLeaderInfo, err := k8sutils.GetStatefulSet(instance.Namespace, instance.ObjectMeta.Name+"-leader") if err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } if int32(redisLeaderInfo.Status.ReadyReplicas) == leaderReplicas { err = k8sutils.CreateRedisFollower(instance) if err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } // if we have followers create their service. if followerReplicas != 0 { err = k8sutils.CreateRedisFollowerService(instance) if err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } } err = k8sutils.ReconcileRedisPodDisruptionBudget(instance, "follower", instance.Spec.RedisFollower.PodDisruptionBudget) if err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } } redisFollowerInfo, err := k8sutils.GetStatefulSet(instance.Namespace, instance.ObjectMeta.Name+"-follower") if err != nil { - return ctrl.Result{}, err + return ctrl.Result{RequeueAfter: time.Second * 60}, err } if leaderReplicas == 0 { diff --git a/example/eks-cluster.yaml b/example/eks-cluster.yaml index b9f0547d7..fa5aecdf9 100644 --- a/example/eks-cluster.yaml +++ b/example/eks-cluster.yaml @@ -4,7 +4,7 @@ metadata: name: operator-testing region: us-west-2 version: "1.22" -nodeGroups: +managedNodeGroups: - name: ng-1 instanceType: t3a.medium desiredCapacity: 3 @@ -12,3 +12,12 @@ nodeGroups: ssh: allow: true volumeType: gp3 +kubernetesNetworkConfig: + ipFamily: IPv4 +# ipFamily: IPv6 +addons: + - name: vpc-cni + - name: coredns + - name: kube-proxy +iam: + withOIDC: true