Notice
Recent Posts
Recent Comments
Link
«   2026/06   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30
Tags more
Archives
Today
Total
관리 메뉴

holssi 님의 블로그

[CKA] 기출문제 ClusterRole, ClusterRoleBinding (3) 본문

CKA

[CKA] 기출문제 ClusterRole, ClusterRoleBinding (3)

holssi 2026. 1. 14. 15:00

작업 클러스터는 k8s이고, CSR(Certificate Signing Request)를 통해 app-manager 인증서를 발급받은 user app-manager에게 cluster내 모든 네임스페이스의 deployment, pod, service 리소스를 create, list, get, update, delete 할 수 있는 권한 할당하기

- user name: app-manager

- certificate name: app-manager

- clusterRole name: app-access

- clusterRoleBinding name: app-access-binding

 

0. 컨텍스트 전환

kubectl config use-context k8s
ssh k8s-master

 

1. app-manager 이름의 인증서 생성

app-manager라는 사용자를 식별할 개인키와 인증서 요청서(CSR)를 만듬

openssl genrsa -out app-manager.key 2048
openssl req -new -key app-manager.key -out app-manager.csr -subj "/CN=app-manager"

 

request의 내용에 발급받은 키의 내용을 입력해야해서, 아래 명령어로 확인 후 EOF에 붙어 넣는다

cat app-manager.csr | base64 | tr -d "\n"

 

cat <<EOF | kubectl apply -f -
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
  name: app-manager
spec:
  request:
  signerName:
  usages:
  - client auth
EOF

 

usages는 이 인증서를 어디에 어떤 용도로 쓸 것인가를 정의하는 것이다

 

생성된 csr이 승인되도록 한다

kubectl certificate approve app-manager

 

.crt 파일로 csr을 추출한다

kubectl get csr app-manager -o jsonpath='{.status.certificate}' | base64 -d > app-manager.crt

 

 

2. app-manager라는 이름의 user 생성

자격 증명을 생성하고 config 정보를 본다

kubectl config set-credentials app-manager --client-key=app-manager.key --client-certficate=app-manager.crt --embed-certs=true

 

context를 등록하고 config 정보를 본다

kubectl config set-context app-manager --cluster=kubernetes --user=app-manager
kubect config use-context app-manager

 

3. app-access라는 이름의 clusterrole 생성

kubectl create clusterrole app-acceess --verb=create,list,get,update,delete --resource=deployment,pod,service

 

4. app-access-binding이라는 이름의 clusterrolebinding 생성

kubectl create clusterrolebinding app-access-binding --clusterrole=app-access --user=app-manager