fix: the problem of conflicting controller output logs caused by duplicate initialization of roles and workspace roles when the controller is started (#2139)
Signed-off-by: peng wu <2030047311@qq.com> Signed-off-by: hongming <coder.scala@gmail.com>
This commit is contained in:
@@ -89,6 +89,9 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
|
||||
// The object is not being deleted, so if it does not have our finalizer,
|
||||
// then lets add the finalizer and update the object.
|
||||
if workspaceLabelExists && !controllerutil.ContainsFinalizer(namespace, constants.CascadingDeletionFinalizer) {
|
||||
if err := r.initRoles(ctx, namespace); err != nil {
|
||||
return ctrl.Result{}, errors.Wrapf(err, "failed to init roles in namespace %s", namespace.Name)
|
||||
}
|
||||
if err := r.initCreatorRoleBinding(ctx, namespace); err != nil {
|
||||
return ctrl.Result{}, errors.Wrapf(err, "failed to init creator role binding")
|
||||
}
|
||||
@@ -104,11 +107,7 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
|
||||
return ctrl.Result{}, nil
|
||||
}
|
||||
|
||||
if workspaceLabelExists {
|
||||
if err := r.initRoles(ctx, namespace); err != nil {
|
||||
return ctrl.Result{}, errors.Wrapf(err, "failed to init roles in namespace %s", namespace.Name)
|
||||
}
|
||||
} else {
|
||||
if !workspaceLabelExists {
|
||||
if err := r.cleanUp(ctx, namespace); err != nil {
|
||||
return ctrl.Result{}, errors.Wrapf(err, "failed to clean up namespace %s", namespace.Name)
|
||||
}
|
||||
|
||||
@@ -9,23 +9,18 @@ import (
|
||||
"context"
|
||||
"fmt"
|
||||
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
|
||||
rbacutils "kubesphere.io/kubesphere/pkg/utils/rbac"
|
||||
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
|
||||
kscontroller "kubesphere.io/kubesphere/pkg/controller"
|
||||
|
||||
"github.com/go-logr/logr"
|
||||
rbacv1 "k8s.io/api/rbac/v1"
|
||||
metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
|
||||
"k8s.io/client-go/tools/record"
|
||||
iamv1beta1 "kubesphere.io/api/iam/v1beta1"
|
||||
ctrl "sigs.k8s.io/controller-runtime"
|
||||
"sigs.k8s.io/controller-runtime/pkg/client"
|
||||
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
|
||||
|
||||
rbachelper "kubesphere.io/kubesphere/pkg/componenthelper/auth/rbac"
|
||||
kscontroller "kubesphere.io/kubesphere/pkg/controller"
|
||||
rbacutils "kubesphere.io/kubesphere/pkg/utils/rbac"
|
||||
)
|
||||
|
||||
const (
|
||||
@@ -97,6 +92,7 @@ func (r *Reconciler) syncToKubernetes(ctx context.Context, role *iamv1beta1.Role
|
||||
|
||||
if err != nil {
|
||||
r.logger.Error(err, "sync role failed", "namespace", role.Namespace, "role", role.Name)
|
||||
return err
|
||||
}
|
||||
|
||||
r.logger.V(4).Info("sync role to K8s", "namespace", role.Namespace, "role", role.Name, "op", op)
|
||||
|
||||
@@ -115,6 +115,12 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
|
||||
// The object is not being deleted, so if it does not have our finalizer,
|
||||
// then lets add the finalizer and update the object.
|
||||
if !controllerutil.ContainsFinalizer(workspaceTemplate, constants.CascadingDeletionFinalizer) {
|
||||
if err := r.initWorkspaceRoles(ctx, workspaceTemplate); err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
if err := r.initManagerRoleBinding(ctx, workspaceTemplate); err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
updated := workspaceTemplate.DeepCopy()
|
||||
// Remove legacy finalizer
|
||||
controllerutil.RemoveFinalizer(updated, "finalizers.workspacetemplate.kubesphere.io")
|
||||
@@ -140,12 +146,6 @@ func (r *Reconciler) Reconcile(ctx context.Context, req ctrl.Request) (ctrl.Resu
|
||||
return ctrl.Result{}, nil
|
||||
}
|
||||
|
||||
if err := r.initWorkspaceRoles(ctx, workspaceTemplate); err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
if err := r.initManagerRoleBinding(ctx, workspaceTemplate); err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
if err := r.multiClusterSync(ctx, workspaceTemplate); err != nil {
|
||||
return ctrl.Result{}, err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user