서비스어카운트(ServiceAccount) 에서 사용자가 kubectl로 명령을 보내게되면 컨트롤 플레인의 kube-api-server에서 요청에 포함된 서비스어카운트의 인증 정보를 가지고 인증, 인가 작업을 거쳐 명령이 실행되는 것을 알아보았다.

즉, 서비스어카운트에 대한 인증 정보를 가지고 있다면 kube-api-server로 요청이 가능하다.

이번글에서는 서비스어카운트의 인증 정보를 가지고 kubectl이 아니라 직접 http 요청을 보내서 응답을 확인해보고, 이를 확장해서 쿠버네티스 내부적으로 쿠버네티스 api를 어떻게 사용하는지 알아보자.

서비스어카운트 토큰으로 직접 API 호출해보기

  1. 토큰 생성하기
kubectl create token $serviceaccount_name

Untitled

  1. 토큰으로 REST API 호출하기
curl https://$kube_api_server_ip:$port/api/v1/namespaces/default/pods --header "Authorization: Bearer $token" -k

/api/v1/namesapces/default/podskubectl get pods -n default 와 같은 명령이다.

Untitled

Untitled

pod 조회 권한만 있기에, service 조회는 403에러가 응답된다.