From b4efd9f8f4bb03e5029b13d86fbc2506588018c7 Mon Sep 17 00:00:00 2001 From: subhamkrai Date: Mon, 10 May 2021 14:46:34 +0530 Subject: [PATCH] ceph: create crash collector pods after secret created there was confusion regarding crash collector pods in pending state which was basically due to secret `rook-ceph-crash-collector-keyring` was not created till mons are in quorum. this commit creates crash collector pods after secret `rook-ceph-crash-collector-keyring` is created. Signed-off-by: subhamkrai --- pkg/operator/ceph/cluster/crash/reconcile.go | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/pkg/operator/ceph/cluster/crash/reconcile.go b/pkg/operator/ceph/cluster/crash/reconcile.go index 006dd38de..26e07b616 100644 --- a/pkg/operator/ceph/cluster/crash/reconcile.go +++ b/pkg/operator/ceph/cluster/crash/reconcile.go @@ -18,6 +18,7 @@ package crash import ( "context" + "time" "github.com/pkg/errors" "github.com/rook/rook/pkg/operator/ceph/cluster/mgr" @@ -25,6 +26,7 @@ import ( "github.com/rook/rook/pkg/operator/ceph/cluster/rbd" appsv1 "k8s.io/api/apps/v1" kerrors "k8s.io/apimachinery/pkg/api/errors" + "k8s.io/apimachinery/pkg/types" "github.com/rook/rook/pkg/operator/ceph/file/mds" "github.com/rook/rook/pkg/operator/ceph/file/mirror" @@ -52,6 +54,9 @@ var ( logger = capnslog.NewPackageLogger("github.com/rook/rook", controllerName) // Implement reconcile.Reconciler so the controller can reconcile objects _ reconcile.Reconciler = &ReconcileNode{} + + // wait for secret "rook-ceph-crash-collector-keyring" to be created + waitForRequeueIfSecretNotCreated = reconcile.Result{Requeue: true, RequeueAfter: 30 * time.Second} ) // ReconcileNode reconciles ReplicaSets @@ -156,6 +161,18 @@ func (r *ReconcileNode) reconcile(request reconcile.Request) (reconcile.Result, return reconcile.Result{}, nil } + // checking if secret "rook-ceph-crash-collector-keyring" is present which is required to create crashcollector pods + secret := &corev1.Secret{} + err = r.client.Get(context.TODO(), types.NamespacedName{Name: crashCollectorKeyName, Namespace: namespace}, secret) + if err != nil { + if kerrors.IsNotFound(err) { + logger.Debugf("secret %q not found. retrying in %q. %v", crashCollectorKeyName, waitForRequeueIfSecretNotCreated.RequeueAfter.String(), err) + return waitForRequeueIfSecretNotCreated, nil + } + + return reconcile.Result{}, errors.Wrapf(err, "failed to list the %q secret.", crashCollectorKeyName) + } + clusterImage := cephCluster.Spec.CephVersion.Image cephVersion, err := opcontroller.GetImageVersion(cephCluster) if err != nil {