web-dev-qa-db-ja.com

ClusterRoleBindingをKubernetes ServiceAccountにアタッチできません

ClusterRoleBindingを使用して、Kubernetes ServiceAccountにcluster-adminロールを付与しようとしています。

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

また、他のクラスターの役割をサービスアカウントにアタッチしようとしましたが、アタッチできませんでした。

これは、サービスアカウントにクラスターの役割をアタッチできないことを意味すると思います。その場合、サービスアカウントにクラスターレベルの権限をどのように付与しますか?

7
jjno91

「roleRefを変更できません」というエラーは、作成しようとしたClusterRoleBindingがすでに存在していることを示していました。

kubectl get clusterrolebindingを実行すると、ClusterRoleBindingがすでに存在していることがわかりました。

kubectl delete clusterrolebinding/jenkinsを実行した後、上記のYAMLを正常に実行できました。

13
jjno91