Namespace Scope Resource
Role과 RoleBinding 객체는 namespace 내에 생성되어 해당 namespace 내 자원에 대한 접근만을 제어한다. 생성 시 namespace를 지정하지 않으면 default namespace에 생성된다. namespace 내에 생성되는 자원은 Role, RoleBinding 외에도 Pod, ReplicaSet, Deployment, Job, Service, Secret 등이 존재하여, 그 외 해당되는 자원은 아래 명령어로 확인할 수 있다.
Namespace Scope Resource 확인
kubectl api-resources --namespaced=true
Cluster Scope Resource
특정 namespace에 한정되지 않는 cluster wide resource는 Node, PV, ClusterRole, ClusterRoleBinding, CertificateSigningRequest, namespace 등이 해당된다. Cluster Scope Resource 목록은 아래 명령어로 확인할 수 있다.
Cluster Scope Resource 확인
kubectl api-resources --namespaced=false
ClusterRole
클러스터 관리자에게 클러스터 노드 정보 조회, 노드 생성 및 삭제 또는 스토리지 관리자에게 PV 생성과 같이 사용자에게 cluster scope resource에 대한 접근 권한을 부여할 때 사용한다. cluster scope resource에 적용된다는 점을 제외하면 Role과 동일하다.
정의 yaml 파일은 아래와 같으며, create 명령으로 생성할 수 있다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
name: cluster-administrator
rules:
- apiGroups: [""]
resources: ["nodes"]
verbs: ["list", "get", "create", "delete"]
ClusterRole은 namespace scope resource에 대해서도 생성할 수 있으며, 모든 namespace에 대한 자원 접근을 허용할 때 사용한다.
ClusterRoleBinding
RoleBinding과 마찬가지로, CluterRole과 사용자를 연결하는 객체이다.
정의 yaml 파일을 아래와 같으며, create 명령을 생성할 수 있다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cluster-admin-role-binding
subjects: # 사용자 정보
- kind: User
name: cluster-admin
apiGroup: rbac.authorization.k8s.io/v1
roleRef: # clusterRole 정보
kind: ClusterRole
name: cluster-administrator
apiGroup: rbac.authorization.k8s.io/v1