无法将ClusterRoleBinding附加到Kubernetes ServiceAccount

时间:2018-08-03 16:48:18

标签: kubernetes rbac

我正在尝试使用ClusterRoleBinding向Kubernetes ServiceAccount授予集群管理员角色:

apiVersion: v1
kind: ServiceAccount
metadata:
  name: jenkins
  namespace: jenkins

---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: jenkins
roleRef:
  apiGroup: rbac.authorization.k8s.io
  kind: ClusterRole
  name: cluster-admin
subjects:
- kind: ServiceAccount
  name: jenkins
  namespace: jenkins

...我收到此错误:

The ClusterRoleBinding "jenkins" is invalid: roleRef: Invalid value: rbac.RoleRef{APIGroup:"rbac.authorization.k8s.io", Kind:"ClusterRole", Name:"cluster-admin"}:
 cannot change roleRef

我已经确认ClusterRole确实存在:

kubectl get clusterrole
NAME                                                                   AGE
admin                                                                  1d
alb-ingress-controller                                                 1d
aws-node                                                               1d
cluster-admin                                                          1d

我还尝试将其他群集角色附加到我的服务帐户,但无法这样做。

我认为这意味着您无法将群集角色附加到服务帐户,如果是这种情况,那么您如何授予服务帐户群集级别的权限?

1 个答案:

答案 0 :(得分:6)

错误“无法更改roleRef”是指我试图创建的ClusterRoleBinding已经存在的事实。

通过运行kubectl get clusterrolebinding,我可以看到ClusterRoleBinding已经存在。

运行kubectl delete clusterrolebinding/jenkins后,我能够成功执行上述YAML。