From a1fc70f2fcb591c69c3effa075d5fe89d809a581 Mon Sep 17 00:00:00 2001 From: travisn Date: Tue, 30 Jan 2024 16:23:10 -0700 Subject: [PATCH] exporter: dont delete exporter service on daemon deletion The exporter service and service monitor should not be deleted if an individual daemon is being removed from a node. As long as the exporter is enabled with v18 and newer, the exporter service and service monitor should exist. Clusters were seeing their metrics stop collection when the exporter service and service monitor would disappear, especially when multiple clusters are configured. Signed-off-by: travisn --- pkg/operator/ceph/cluster/nodedaemon/reconcile.go | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/pkg/operator/ceph/cluster/nodedaemon/reconcile.go b/pkg/operator/ceph/cluster/nodedaemon/reconcile.go index af714bcd7..9553995fc 100644 --- a/pkg/operator/ceph/cluster/nodedaemon/reconcile.go +++ b/pkg/operator/ceph/cluster/nodedaemon/reconcile.go @@ -85,12 +85,12 @@ func (r *ReconcileNode) Reconcile(context context.Context, request reconcile.Req return result, err } -func (r *ReconcileNode) cleanupExporterResources(clusterNamespace string, ns string, nodeName string) (reconcile.Result, error) { +func (r *ReconcileNode) cleanupExporterResources(ns string, nodeName string) (reconcile.Result, error) { err := k8sutil.DeleteServiceMonitor(r.context, r.opManagerContext, ns, cephExporterAppName) if err != nil { logger.Debugf("failed to delete service monitor for ceph exporter in namespace %q on node %q. %v", ns, nodeName, err) } - err = k8sutil.DeleteService(r.opManagerContext, r.context.Clientset, r.opConfig.OperatorNamespace, cephExporterAppName) + err = k8sutil.DeleteService(r.opManagerContext, r.context.Clientset, ns, cephExporterAppName) if err != nil { return reconcile.Result{}, errors.Wrapf(err, "failed to delete ceph exporter metrics service in namespace %q on node %q", ns, nodeName) } @@ -207,10 +207,6 @@ func (r *ReconcileNode) reconcile(request reconcile.Request) (reconcile.Result, if err != nil { return reconcile.Result{}, errors.Wrapf(err, "failed to list and delete deployments in namespace %q on node %q", namespace, request.Name) } - result, err := r.cleanupExporterResources(cephCluster.Namespace, namespace, request.Name) - if err != nil { - return result, errors.Wrapf(err, "failed to cleanup exporter resources in namespace %q on node %q", namespace, request.Name) - } } // Cleanup exporter if the ceph version isn't supported if !cephVersion.IsAtLeast(MinVersionForCephExporter) { @@ -219,7 +215,7 @@ func (r *ReconcileNode) reconcile(request reconcile.Request) (reconcile.Result, if err := r.listDeploymentAndDelete(cephExporterAppName, request.Name, namespace); err != nil { return reconcile.Result{}, errors.Wrap(err, "failed to delete ceph-exporter") } - result, err := r.cleanupExporterResources(cephCluster.Namespace, namespace, request.Name) + result, err := r.cleanupExporterResources(namespace, request.Name) if err != nil { return result, errors.Wrapf(err, "failed to cleanup exporter resources in namespace %q on node %q", namespace, request.Name) }