未验证 提交 cae0c6c3 编写于 作者: K KubeSphere CI Bot 提交者: GitHub

Merge pull request #3654 from wansir/fix-3652

Fix owner reference conflict
......@@ -133,13 +133,19 @@ func (r *Reconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
// Bind to workspace if the namespace created by kubesphere
_, hasWorkspaceLabel := namespace.Labels[tenantv1alpha1.WorkspaceLabel]
if hasWorkspaceLabel {
if err := r.bindWorkspace(rootCtx, logger, namespace); err != nil {
return ctrl.Result{}, err
}
} else {
if err := r.unbindWorkspace(rootCtx, logger, namespace); err != nil {
return ctrl.Result{}, err
// if the namespace doesn't have a label like kubefed.io/managed: "true" (single cluster environment)
// or it has a label like kubefed.io/managed: "false"(multi-cluster environment), we set the owner reference filed.
// Otherwise, kubefed controller will remove owner reference.
kubefedManaged := namespace.Labels[constants.KubefedManagedLabel] == "true"
if !kubefedManaged {
if hasWorkspaceLabel {
if err := r.bindWorkspace(rootCtx, logger, namespace); err != nil {
return ctrl.Result{}, err
}
} else {
if err := r.unbindWorkspace(rootCtx, logger, namespace); err != nil {
return ctrl.Result{}, err
}
}
}
// Initialize roles for devops/project namespaces if created by kubesphere
......
......@@ -126,6 +126,12 @@ func (r *Reconciler) Reconcile(req ctrl.Request) (ctrl.Result, error) {
return ctrl.Result{}, err
} else {
for _, namespace := range namespaces.Items {
// managed by kubefed-controller-manager
kubefedManaged := namespace.Labels[constants.KubefedManagedLabel] == "true"
if kubefedManaged {
continue
}
// managed by workspace
if err := r.bindWorkspace(rootCtx, logger, &namespace, workspace); err != nil {
return ctrl.Result{}, err
}
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册