
서비스 계정 생성 명령어:
kubectl create serviceaccount <서비스계정이름>
예: kubectl create serviceaccount dashboard-sa
생성된 서비스 계정은 자동으로 토큰(Secret 형태)을 생성하고 연결
Secret 오브젝트를 조회:
kubectl get secret
kubectl describe secret <secret-이름>
Secret 내부에 저장된 토큰은 애플리케이션이 Kubernetes API와 통신할 때 Bearer 토큰으로 사용 가능
Kubernetes는 기본적으로 Pod에 Service Account Token을 자동 마운트
마운트 경로:
/var/run/secrets/kubernetes.io/serviceaccount/token
해당 경로에서 토큰 파일 확인 가능
Pod 정의 파일에 아래처럼 명시:
serviceAccountName: dashboard-sa
기존 Pod는 Service Account 변경 불가 → 재생성 필요
Deployment는 수정 시 자동 롤아웃 진행되어 변경 가능
Service Account Token 자동 마운트 비활성화 옵션:
automountServiceAccountToken: false
Service Account 생성 시 자동 Secret/Token 생성 비활성화
토큰 수동 생성 필요:
kubectl create token <serviceaccount이름>
수동 생성한 토큰은 기본적으로 1시간 유효 (옵션으로 조절 가능)
여전히 이전 방식 사용 가능:
apiVersion: v1
kind: Secret
metadata:
name: dashboard-sa-secret
annotations:
kubernetes.io/service-account.name: dashboard-sa
type: kubernetes.io/service-account-token
단, 보안상 유효기간 없는 토큰은 권장되지 않음
토큰 요청 API 사용을 Kubernetes 공식 문서에서 권장