Kubernetes에서는 사용자 외에 k8s에서 실행 중인 Pod 등에도 특정 작업을 수행하기 위한 권한을 부여할 수 있는데, 이 때 필요한 게 Service Account라는 개념이다.
어떤 Pod가 다른 Pod 또는 시스템 자원에 접근하고 특정한 동작을 수행하기 위해선 Pod에 적용된 Service Account에 적절한 권한을 부여해야 한다.
예를 들어, Prometheus와 같은 Pod는 다른 Pod들에 대해 metric data를 수집할 수 있는 권한이 필요한데, 이런 경우에는 Prometheus에 적용된 Service Account에 적절한 권한이 없다면 제대로 작동하지 않는다.
Pod는 동일한 Namespace에 존재하는 Service Account만을 사용할 수 있고, 별도 명시하지 않으면 Namespace의 Defualt Service Account를 사용한다.
Default Service Account는 Cluster의 상태를 읽거나 수정할 수 없고, Unauthenticatied(인증되지 않은 사용자) 권한만 가지고 있다.
Pod에 적용된 Service Account를 조회하기 위해서는 Pod의 manifest를 조회해보면 된다.
kubectl get pod web -n migops -o yaml
spec 필드에 serviceAccount 라는 속성으로 기입되어 있다.
Default Service Account가 가지고 있는 인증 정보는 토큰을 조회하면 확인할 수 있다.
kubectl get secrets
명령어를 사용하면 토큰을 조회할 수 있다.
위 토큰에 대해 더 자세한 내용을 확인하려면 describe 명령을 수행하자.
kubectl describe secrets [secret name]
https://medium.com/@syper/kubernetes-%EB%B3%B4%EC%95%88-740b68758bb6