ClusterRole & ClusterRoleBinding

zuckerfrei·2024년 1월 12일
0

Kubernetes

목록 보기
43/63

RBAC : 네임스페이스 리소스에 대한 접근 제어
ClusterRole : 비네임스페이스 리소스에 대한 접근 제어

즉, clusterrole은 네임스페이스의 일부로 구성되는 것이 아님


# 네임스페이스 리소스 확인
kubectl api-resources --namespaced=true

# 비(非)네임스페이스리소스 확인
kubectl api-resources --namespaced=false
# 네임스페이스 리소스 확인
controlplane ~ ➜  kubectl api-resources --namespaced=true
NAME                        SHORTNAMES   APIVERSION                     NAMESPACED   KIND
bindings                                 v1                             true         Binding
configmaps                  cm           v1                             true         ConfigMap
endpoints                   ep           v1                             true         Endpoints
events                      ev           v1                             true         Event
limitranges                 limits       v1                             true         LimitRange
persistentvolumeclaims      pvc          v1                             true         PersistentVolumeClaim
..

# 비(非)네임스페이스리소스 확인
controlplane ~ ➜  kubectl api-resources --namespaced=false
NAME                              SHORTNAMES   APIVERSION                             NAMESPACED   KIND
componentstatuses                 cs           v1                                     false        ComponentStatus
namespaces                        ns           v1                                     false        Namespace
nodes                             no           v1                                     false        Node
persistentvolumes                 pv           v1                                     false        PersistentVolume
..

1. 클러스터 역할 생성

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: monitoring-endpoints
  labels:
    rbac.example.com/aggregate-to-monitoring: "true"
# When you create the "monitoring-endpoints" ClusterRole,
# the rules below will be added to the "monitoring" ClusterRole.
rules:
- apiGroups: [""]
  resources: ["services", "endpointslices", "pods"]
  verbs: ["get", "list", "watch"]
kubectl create -f {파일}

2.클러스터 역할 바인딩 생성

apiVersion: rbac.authorization.k8s.io/v1
# This cluster role binding allows anyone in the "manager" group to read secrets in any namespace.
kind: ClusterRoleBinding
metadata:
  name: read-secrets-global
subjects:
- kind: Group
  name: manager # Name is case sensitive
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: secret-reader
  apiGroup: rbac.authorization.k8s.io
kubectl create -f {파일}

또는 빠르게 imperative 방식으로 생성해도 좋다.

공식 문서kubectl create clusterrole -h에 명령어 예시가 존재

kubectl create rolebinding smlee-binding --clusterrole=smlee --user=michelle 
kubectl create clusterrolebinding smlee-binding --clusterrole=smlee --user=michelle
profile
무설탕 음료를 좋아합니다

0개의 댓글