728x90
문제 유형
Kubernetes RBAC(Role-Based Access Control) 문제
- 목적: Kubernetes의 RBAC를 활용하여 특정 네임스페이스(api-access)에서 서비스 계정(cicd-token)이 클러스터 수준의 리소스(deployment, statefulSet, daemonSet)에 대해 필요한 권한을 가질 수 있도록 설정하는 문제입니다.
- 주요 작업:
- ClusterRole 생성 (클러스터 전역에서의 권한 정의)
- ServiceAccount 확인 및 설정
- ClusterRole과 ServiceAccount를 연결하는 ClusterRoleBinding 생성
문제 해결 전략
요구사항
Kubernetes에서 RBAC를 설정하여 api-access 네임스페이스에 있는 ServiceAccount(cicd-token)가 클러스터 전역에서 다음 리소스에 대해 생성 권한을 가지도록 구성하세요:
- 리소스: deployment, statefulSet, daemonSet
- 권한: create
다음 작업을 수행
- ClusterRole deployment-clusterrole을 생성하여 위 리소스에 대해 create 권한을 부여합니다.
- cicd-token이라는 ServiceAccount가 api-access 네임스페이스에 존재하는지 확인합니다.
- ClusterRoleBinding deployment-clusterrolebinding을 생성하여 deployment-clusterrole과 cicd-token을 연결합니다.
- 각 단계의 결과를 확인합니다.
필요한 명령어
1. ClusterRole 생성
kubectl create clusterrole <ClusterRole 이름> --verb=<권한> --resource=<리소스 리스트>
실제 명령어
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,statefulSet,daemonSet
2. ServiceAccount 생성 확인
kubectl get sa --namespace=<네임스페이스>
예시
kubectl get sa --namespace=api-access
3. ClusterRoleBinding 생성
kubectl create clusterrolebinding <ClusterRoleBinding 이름> --clusterrole=<ClusterRole 이름> --serviceaccount=<네임스페이스>:<ServiceAccount 이름>
예시
kubectl create clusterrolebinding deployment-clusterrolebinding --clusterrole=deployment-clusterrole --se
4. 결과 확인
생성된 ClusterRole 확인
kubectl get clusterrole <ClusterRole 이름> kubectl describe clusterrole <ClusterRole 이름>
생성된 ClusterRoleBinding 확인
kubectl get clusterrolebindings <ClusterRoleBinding 이름> kubectl describe clusterrolebindings <ClusterRoleBinding 이름>
단계별 명령어
1. ClusterRole 생성
kubectl create clusterrole deployment-clusterrole --verb=create --resource=deployment,statefulSet,daemonSet
- 설명:
- deployment-clusterrole이라는 이름의 ClusterRole 생성.
- 리소스(deployment, statefulSet, daemonSet)에 대해 create 권한을 부여.
- ClusterRole은 클러스터 전역에서 작동.
2. ServiceAccount 확인
kubectl get sa --namespace=api-access
- 설명:
- api-access 네임스페이스에서 cicd-token이라는 ServiceAccount가 존재하는지 확인.
- ServiceAccount가 존재하지 않는다면 추가로 생성해야 함.
3. ClusterRoleBinding 생성
kubectl create clusterrolebinding deployment-clusterrolebinding --clusterrole=deployment-clusterrole --serviceaccount=api-access:cicd-token
- 설명:
- deployment-clusterrolebinding이라는 이름의 ClusterRoleBinding 생성.
- deployment-clusterrole과 cicd-token ServiceAccount를 연결.
- ServiceAccount가 클러스터 전역에서 정의된 권한(create)을 사용할 수 있도록 설정.
4. 결과 확인
ClusterRole 확인
설명: deployment-clusterrole이 제대로 생성되었는지 확인
kubectl get clusterrole deployment-clusterrole kubectl describe clusterrole deployment-clusterrole
ClusterRoleBinding 확인
설명: deployment-clusterrolebinding이 ServiceAccount와 올바르게 연결되었는지 확인
kubectl get clusterrolebindings deployment-clusterrolebinding kubectl describe clusterrolebindings deployment-clusterrolebinding
728x90
'쿠버네티스' 카테고리의 다른 글
[쿠버네티스] CKA - Mock Exam 정리 (0) | 2025.01.17 |
---|---|
[쿠버네티스] pod 심화 과정 - 멀티 컨테이너 생성, 사이드카 파드 생성 (0) | 2024.12.28 |
[쿠버네티스] 아키텍쳐 정리 및 간단한 실습 정리 (4) | 2024.12.15 |
[쿠버네티스] kube- 관련 개념 정리 (0) | 2024.12.11 |
[쿠버네티스] ETCD 관련 정리 (0) | 2024.12.11 |