Link Search Menu Expand Document

Cluster Roles

ClusterRoles are similar to Roles but are not namespaced and can define permissions across the entire cluster. They are useful for granting access to cluster-wide resources or for defining permissions that should apply to multiple namespaces.

List of API Resources

# List ClusterRoles
kubectl api-resources --namespaced=true 
kubectl api-resources --namespaced=false

Example: Creating a ClusterRole

cluster-admin-role.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cluster-admin
rules:
- apiGroups: ["*"] # All API groups
  resources: ["*"] # All resources
  verbs: ["*"]     # All verbs
kubectl create -f cluster-admin-role.yaml

Single line command to create ClusterRole

kubectl create clusterrole cluster-admin --verb=* --resource=* --api-group=*

Key Differences Between Role and ClusterRole

  • Scope: Roles are namespaced, while ClusterRoles are cluster-wide.
  • Use Cases: Roles are used to define permissions within a specific namespace, whereas ClusterRoles are used for cluster-wide permissions or for resources that are not namespaced.

Example: Creating a ClusterRoleBinding

cluster-admin-role-binding.yaml

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: cluster-admin-binding
subjects:
- kind: User
  name: admin-user
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: cluster-admin
  apiGroup: rbac.authorization.k8s.io
kubectl create -f cluster-admin-role-binding.yaml

Single line command to create ClusterRoleBinding

kubectl create clusterrolebinding cluster-admin-binding --clusterrole=cluster-admin --user=admin-user

This ClusterRoleBinding grants the user “admin-user” the permissions defined in the “cluster-admin” ClusterRole across the entire cluster.