전공공부
[K8S - CKA] Cluster Role & Role Binding 본문
이전 내용에서는 사용자를 네임스페이스 리소스(Pod,Deployments,...)에 인증하는 방법을 알아보았습니다. 우리는 그것에 Roles 및 RoleBindings을 사용했구요. 그러나, 사용자에게 Node 또는 PV와 같은 클러스터 범위의 리소스에 권한을 부여하려면 어떻게 해야 할까요?
해결법은 Cluster Roles 및 Cluster Role Bindings을 쓰면 됩니다.
클러스터 롤 (Cluster Roles)
클러스터 롤은 롤과 매우 유사하지만 클러스터 범위의 리소스를 위한 것입니다. 예를 들어 클러스터 관리자 롤을 만들어 클러스터 관리자에게 클러스터 내의 노드를 보거나 만들거나 삭제할 수 있는 권한을 부여할 수 있습니다. 마찬가지로 스토리지 관리자 롤을 만들어 스토리지 관리자에게 PV, PVC를 만들 수 있는 권한을 부여할 수 있습니다. 클러스터 롤 정의 파일을 만들고 apiVersion을 rbac.authorization.k8s.io/v1로 설정하고 kind를 ClusterRole로 설정합니다. 나머지는 Role 만들 듯이 하면 됩니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
namespace: default
name: cluster-administrator
rules:
- apiGroups: [""] # "" indicates the core API group
resources: ["nodes"]
verbs: ["get", "list", "create", "delete"]
클러스터 롤 바인딩 (Cluster Role Binding)
이제 해당 사용자를 해당 클러스터 롤에 연결하는 해봅시다. 이를 위해 Cluster Role Binding이라는 다른 객체를 만듭니다. 여기서는 클러스터 관리자 롤 바인딩이라는 이름을 사용합니다.
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
name: cluster-admin-role-binding
namespace: default
subjects:
- kind: User
name: cluster-admin
apiGroup: rbac.authorization.k8s.io
roleRef:
kind: ClusterRole
name: cluster-administrator
apiGroup: rbac.authorization.k8s.io
아래 명령어로 개체를 만듭니다.
$ kubectl create -f cluster-admin-role-binding.yaml
TIP
클러스터 롤으로 유저를 만들고 네임스페이스 스코프 리소스에 대한 개체로 만들면 어떻게 될까요? 해당 네임스페이스 스코프 리소스 개체는 다른 네임스페이스에서도 해당 유저가 접속 할 수 있겠죠.
'Study > K8S' 카테고리의 다른 글
[K8S - CKA] Image Security (0) | 2024.01.16 |
---|---|
[K8S - CKA] ServiceAccounts (0) | 2024.01.14 |
[K8S - CKA] Role Based Access Controls (1) | 2024.01.10 |
[K8S - CKA] Authorization (0) | 2024.01.09 |
[K8S - CKA] API Groups (1) | 2024.01.08 |