반응형
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
namespace: default
이건 ServiceAccount 객체를 생성하겠다는 선언이야.
Pod가 이 계정을 통해 Kubernetes API 또는 다른 리소스에 접근할 수 있게 돼.
🔑 왜 필요할까?
기본적으로 Kubernetes는:
- 사람은 kubectl + 인증서/토큰으로 인증
- Pod(앱)은 ServiceAccount를 통해 인증
즉, 앱이 클러스터 내 리소스에 접근할 때 사용하는 계정이 바로 이거야.
🧩 어디에 쓰일까?
1. Pod가 API Server에 접근할 때
apiVersion: v1
kind: Pod
metadata:
name: my-app
spec:
serviceAccountName: my-service-account
위처럼 설정하면, Pod 내부에서 API를 호출할 때 이 계정의 권한을 사용하게 돼.
2. IAM 연동 (EKS에서 많이 씀)
EKS에서는 IAM Role과 ServiceAccount를 연결해서
Pod가 AWS 리소스(S3, DynamoDB 등)에 직접 접근할 수 있어.
eks.amazonaws.com/role-arn: arn:aws:iam::111122223333:role/MyAppRole
👉 이 어노테이션을 붙이면, 해당 SA는 그 IAM 역할을 사용할 수 있어!
✅ 요약
항목설명
종류 | kind: ServiceAccount |
역할 | Pod가 API 서버나 AWS 리소스 접근 시 사용하는 ID |
기본 | default SA가 자동으로 있음 |
EKS 활용 | IAM Role 연결해서 AWS 리소스 접근 가능 |
반응형