서비스어카운트(ServiceAccount) 에서 사용자가 kubectl로 명령을 보내게되면 컨트롤 플레인의 kube-api-server에서 요청에 포함된 서비스어카운트의 인증 정보를 가지고 인증, 인가 작업을 거쳐 명령이 실행되는 것을 알아보았다.
즉, 서비스어카운트에 대한 인증 정보를 가지고 있다면 kube-api-server로 요청이 가능하다.
이번글에서는 서비스어카운트의 인증 정보를 가지고 kubectl이 아니라 직접 http 요청을 보내서 응답을 확인해보고, 이를 확장해서 쿠버네티스 내부적으로 쿠버네티스 api를 어떻게 사용하는지 알아보자.
kubectl create token $serviceaccount_name
curl https://$kube_api_server_ip:$port/api/v1/namespaces/default/pods --header "Authorization: Bearer $token" -k
/api/v1/namesapces/default/pods
는kubectl get pods -n default
와 같은 명령이다.
pod 조회 권한만 있기에, service 조회는 403에러가 응답된다.