提交 d2452c97 编写于 作者: H hongming 提交者: zryfish

fix: recreate kubectl pod

Signed-off-by: Nhongming <talonwan@yunify.com>
上级 a5a46517
...@@ -628,6 +628,18 @@ func CreateClusterRoleBinding(username string, clusterRoleName string) error { ...@@ -628,6 +628,18 @@ func CreateClusterRoleBinding(username string, clusterRoleName string) error {
return err return err
} }
// create kubectl pod if cluster role is cluster-admin
if clusterRoleName == constants.ClusterAdmin {
if err := kubectl.CreateKubectlDeploy(username); err != nil {
glog.Error("create user terminal pod failed", username, err)
}
// delete kubectl pod if cluster role is not cluster-admin, whether it exists or not
} else {
if err := kubectl.DelKubectlDeploy(username); err != nil {
glog.Error("delete user terminal pod failed", username, err)
}
}
clusterRoleBinding := &rbacv1.ClusterRoleBinding{} clusterRoleBinding := &rbacv1.ClusterRoleBinding{}
clusterRoleBinding.Name = username clusterRoleBinding.Name = username
clusterRoleBinding.RoleRef = rbacv1.RoleRef{Name: clusterRoleName, Kind: ClusterRoleKind} clusterRoleBinding.RoleRef = rbacv1.RoleRef{Name: clusterRoleName, Kind: ClusterRoleKind}
...@@ -657,11 +669,6 @@ func CreateClusterRoleBinding(username string, clusterRoleName string) error { ...@@ -657,11 +669,6 @@ func CreateClusterRoleBinding(username string, clusterRoleName string) error {
glog.Errorln("delete cluster role binding", err) glog.Errorln("delete cluster role binding", err)
return err return err
} }
if found.RoleRef.Name == constants.ClusterAdmin {
if err := kubectl.DelKubectlDeploy(username); err != nil {
glog.Error("delete user terminal pod failed", username, err)
}
}
maxRetries := 3 maxRetries := 3
for i := 0; i < maxRetries; i++ { for i := 0; i < maxRetries; i++ {
_, err = k8s.Client().RbacV1().ClusterRoleBindings().Create(clusterRoleBinding) _, err = k8s.Client().RbacV1().ClusterRoleBindings().Create(clusterRoleBinding)
...@@ -674,12 +681,6 @@ func CreateClusterRoleBinding(username string, clusterRoleName string) error { ...@@ -674,12 +681,6 @@ func CreateClusterRoleBinding(username string, clusterRoleName string) error {
return err return err
} }
if clusterRoleName == constants.ClusterAdmin {
if err := kubectl.CreateKubectlDeploy(username); err != nil {
glog.Errorln("create user terminal pod failed", username, err)
}
}
if !k8sutil.ContainsUser(found.Subjects, username) { if !k8sutil.ContainsUser(found.Subjects, username) {
found.Subjects = clusterRoleBinding.Subjects found.Subjects = clusterRoleBinding.Subjects
_, err = k8s.Client().RbacV1().ClusterRoleBindings().Update(found) _, err = k8s.Client().RbacV1().ClusterRoleBindings().Update(found)
......
...@@ -786,6 +786,11 @@ func CreateUser(user *models.User) (*models.User, error) { ...@@ -786,6 +786,11 @@ func CreateUser(user *models.User) (*models.User, error) {
userCreateRequest.Attribute("description", []string{user.Description}) // RFC4519: descriptive information userCreateRequest.Attribute("description", []string{user.Description}) // RFC4519: descriptive information
} }
if err := kubeconfig.CreateKubeConfig(user.Username); err != nil {
glog.Errorln("create user kubeconfig failed", user.Username, err)
return nil, err
}
err = conn.Add(userCreateRequest) err = conn.Add(userCreateRequest)
if err != nil { if err != nil {
...@@ -797,10 +802,6 @@ func CreateUser(user *models.User) (*models.User, error) { ...@@ -797,10 +802,6 @@ func CreateUser(user *models.User) (*models.User, error) {
setAvatar(user.Username, user.AvatarUrl) setAvatar(user.Username, user.AvatarUrl)
} }
if err := kubeconfig.CreateKubeConfig(user.Username); err != nil {
glog.Errorln("create user kubeconfig failed", user.Username, err)
}
if user.ClusterRole != "" { if user.ClusterRole != "" {
err := CreateClusterRoleBinding(user.Username, user.ClusterRole) err := CreateClusterRoleBinding(user.Username, user.ClusterRole)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册