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
また、他のクラスターの役割をサービスアカウントにアタッチしようとしましたが、アタッチできませんでした。
これは、サービスアカウントにクラスターの役割をアタッチできないことを意味すると思います。その場合、サービスアカウントにクラスターレベルの権限をどのように付与しますか?
「roleRefを変更できません」というエラーは、作成しようとしたClusterRoleBindingがすでに存在していることを示していました。
kubectl get clusterrolebinding
を実行すると、ClusterRoleBindingがすでに存在していることがわかりました。
kubectl delete clusterrolebinding/jenkins
を実行した後、上記のYAMLを正常に実行できました。