我正在尝试使用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
我还尝试将其他群集角色附加到我的服务帐户,但无法这样做。
我认为这意味着您无法将群集角色附加到服务帐户,如果是这种情况,那么您如何授予服务帐户群集级别的权限?
答案 0 :(得分:6)
错误“无法更改roleRef”是指我试图创建的ClusterRoleBinding已经存在的事实。
通过运行kubectl get clusterrolebinding
,我可以看到ClusterRoleBinding已经存在。
运行kubectl delete clusterrolebinding/jenkins
后,我能够成功执行上述YAML。