본문 바로가기
INFRA/DevOps

[K8S] role & rolebinding

by BTC_민물공원 2023. 6. 18.

베하~! BTC_녹차공원 팀의 민물공원 입니다.

이번주는 role 과 rolebinding에 대해 알아보겠습니다!

 

role 이란?


role(역할)은 특정 API나 리소스를 이용할 수 있는지 권한을 정의해 놓은것이랍니다. 쉽게 말해, 쿠버네티스의 사용권한을 정의해 놓은것이예요. role은 지정된 네임스페이스에서만 유효하답니다.

role에서 verbs 라는게 있어요. verbs는 어떤 동작을 하는지 설정하는 부분이랍니다.

verbs에는 여러가지가 있는데 자주 쓰이는 것들을 같이 알아보아요~

 

  • create : 새로운 리소스 생성
  • get : 개별 리소스 조회
  • list : 여러 건의 리소스 조회
  • update : 기존 리소스 내용 전체 업데이트
  • patch : 기존 리소스 중 일부 내용 변경
  • delete : 개별 리소스 삭제
  • deletecollection : 여러 리소스 삭제

 

rolebinding 이란?


role(역할)을 만들었으면 어떠한 사용자 및 그룹에 적용을 시킬지 설정을 해야되겠죠? 그 일을 하는것이 rolebinding이라고 합니다. 즉, 사용자 및 그룹에 Service Account와 role(역할)을 연결시키는 것이예요. 실습을 통해 자세히 알아보아요~

 

role & rolebinding 실습


  1. api-access 라는 namespace를 생성 후 pod-viewer 라는 Service Account 생성
  2. podreader-role 이라는 Role과 podreader-rolebinding이라는 RoleBinding 생성
  3. 생성한 Service Account에 watch, list, get 권한을 매핑

저는 간단히 K8S 환경에서 테스트 할수 있는 killercoda를 이용했어요
killercoda : https://killercoda.com/playgrounds/scenario/kubernetes

 

K8s 1.27 Playground | Killercoda

Kubernetes 1.27 Playground

killercoda.com

위 URL에 접속 후 같이 따라해보아요~

 

먼저, api-access라는 namespace를 생성해 줍니다.

# namespace 생성
kubectl create namespace api-access

# 생성된 namespace 확인
kubectl get namespaces

 

해당 namespace에 pod-viewer라는 Service Account를 생성해 줄거예요.

# Service Account 생성
kubectl create serviceaccount pod-viewer --namespace api-access

# 생성된 Service Account 확인
kubectl get serviceaccount --namespace api-access

 

다음으로 podreader-role이라는 역할을 생성할건데, 이때 역할에 watch, list, get 권한을 부여해줄거예요.

# role 생성 (pods 에 대해 verb : get, list, watch 부여)
kubectl create role podreader-role --verb=get --verb=list --verb=watch --resource=pods --namespace=api-access

# 생성된 role 확인
kubectl get role --namespace=api-access
kubectl describe role podreader-role --namespace=api-access

 

podreader-rolebinding이라는 RoleBinding을 생성 후 Service Account와 역할을 연결해 줄거예요.

# rolebinding 생성
kubectl create rolebinding podreader-rolebinding --role=podreader-role --serviceaccount=api-access:pod-viewer --namespace=api-access

# 생성된 rolebinding 확인
kubectl get rolebinding --namespace=api-access
kubectl describe rolebinding podreader-rolebinding --namespace=api-access

 

연결 성공했답니다~

 

이상 BTC_녹차공원 팀이였습니다!

베빠~!

'INFRA > DevOps' 카테고리의 다른 글

[K8S] Node Upgrade  (0) 2023.07.20
[K8S] Node Schedule  (0) 2023.07.06
[k8s] Kubernetes AutoScaling  (0) 2023.05.02
[K8s]DNS  (0) 2023.04.17
[k8s] kube-proxy  (0) 2023.04.10

댓글