다음은 “rayjobs.ray.io” 리소스에 대해서만 CRUD 권한을 가진 ServiceAccount를 만들고, 그 계정으로 kubectl apply
→권한 검증까지 해보는 순서입니다.
kubectl apply -f namespace.yaml
kubectl apply -f serviceaccount.yaml
kubectl apply -f rolebinding.yaml
rayjob-test
계정으로 RayJob을 생성/조회/삭제해 봅니다.
kubectl apply -f rayjob.yaml \
--namespace=rayjob-test \
--as=system:serviceaccount:rayjob-test:rayjob-test
kubectl get rayjob rayjob-test \
--namespace=rayjob-test \
--as=system:serviceaccount:rayjob-test:rayjob-test
kubectl list rayjobs \
--namespace=rayjob-test \
--as=system:serviceaccount:rayjob-test:rayjob-test
kubectl patch rayjob rayjob-test \
-n rayjob-test \
--type=merge \
-p '{"spec":{"entryPoint":["echo","updated"]}}' \
--as=system:serviceaccount:rayjob-test:rayjob-test
kubectl delete rayjob rayjob-test \
-n rayjob-test \
--as=system:serviceaccount:rayjob-test:rayjob-test
같은 계정으로 RayCluster나 Pod 리소스를 조작해 보아야 권한이 없다고 오류가 나는지 검증할 수 있습니다.
kubectl apply -f raycluster.yaml \
-n rayjob-test \
--as=system:serviceaccount:rayjob-test:rayjob-test
또는 kubectl auth can-i
커맨드로도 확인할 수 있습니다.
kubectl auth can-i create rayjobs.ray.io --as=system:serviceaccount:rayjob-test:rayjob-test -n rayjob-test
# → yes
kubectl auth can-i create rayclusters.ray.io --as=system:serviceaccount:rayjob-test:rayjob-test -n rayjob-test
# → no
이렇게 설정하면 사용자는 RayJob만 생성·조회·수정·삭제 가능하고, RayCluster/Pod/Service 등은 오직 Operator가 관리하도록 RBAC을 최소 권한으로 구성할 수 있습니다.