Kubernetes/Udemy - CKAD with Tests

Cluster Role

비번변경 2022. 1. 8. 23:16

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