반응형
Kubernetes에서 Service Account는 Pod가 API 서버와 상호작용할 때 사용하는 권한과 인증 정보를 제공하는 객체입니다. 여기서 API서버는 컨트롤플레인의 API서버라는 것을 잊지마세요. 참고로 Kubernetes에서 모든 작업은 API 서버를 통해 수행되며, 이는 클러스터의 "중앙 허브" 역할하는 것이 API서버죠!
1. Service Account란?
- 기본적으로 Pod는 Kubernetes API 서버와 상호작용할 때 인증 정보를 요구합니다.
- Service Account는 Pod가 Kubernetes 리소스에 접근할 수 있도록 API 호출 권한을 제공하는 데 사용됩니다.
- 각 Service Account는 토큰(secret)을 포함하며, 이 토큰은 Pod 내에서 API 요청 시 사용됩니다.
2. 기본 Service Account
- Kubernetes는 각 네임스페이스에 기본적으로 default라는 Service Account를 생성합니다.
- 만약 Pod에 Service Account를 지정하지 않으면, 기본적으로 default Service Account가 자동으로 연결됩니다.
kubectl get serviceaccounts -n <namespace>
3. Service Account 생성
Service Account를 수동으로 생성하려면 다음과 같이 YAML 파일을 작성합니다.
apiVersion: v1
kind: ServiceAccount
metadata:
name: my-service-account
namespace: default
생성 명령:
kubectl apply -f service-account.yaml
4. Pod에 Service Account 할당
Pod에서 특정 Service Account를 사용하려면 serviceAccountName 필드를 설정해야 합니다.
apiVersion: v1
kind: Pod
metadata:
name: example-pod
namespace: default
spec:
serviceAccountName: my-service-account
containers:
- name: my-container
image: nginx
5. Service Account와 RBAC
Service Account는 RBAC(Role-Based Access Control)와 함께 사용되어 권한을 세분화합니다.
- Role/ClusterRole: 리소스에 대한 접근 권한 정의.
- RoleBinding/ClusterRoleBinding: Role을 Service Account에 연결.
예: 특정 네임스페이스에서 Pod 조회 권한 부여
- Role 정의:
apiVersion: rbac.authorization.k8s.io/v1
kind: Role
metadata:
namespace: default
name: pod-reader
rules:
- apiGroups: [""]
resources: ["pods"]
verbs: ["get", "watch", "list"]
- RoleBinding 생성:
apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
name: read-pods-binding
namespace: default
subjects:
- kind: ServiceAccount
name: my-service-account
namespace: default
roleRef:
kind: Role
name: pod-reader
apiGroup: rbac.authorization.k8s.io
6. Service Account의 Secret 확인
Service Account는 Pod에 자동으로 마운트된 Secret을 통해 인증 정보를 제공합니다.
- Secret 확인:
kubectl get secret -n default
- 특정 Service Account에 연결된 Secret 찾기:
kubectl describe serviceaccount my-service-account -n default
- Secret 내용 확인:
kubectl get secret <secret-name> -o yaml
Pod에서 특정 Service Account를 사용하려면 serviceAccountName 필드를 설정해야 한다는 포인트 기억하고 있기!
반응형
'Certificated 도전 > CKAD- Kubernetes' 카테고리의 다른 글
[CKAD] 25년 1월 합격 후기, 출제 유형 및 준비 팁 (0) | 2025.01.27 |
---|---|
[CKAD] 리소스 요청, 제한 ( Requests, Limits) 정리 (0) | 2025.01.24 |
[CKAD] NetworkPolicy 개념 잡기, 이것도 무조건 출제 (0) | 2025.01.23 |
[CKAD]Liveness와 Readiness 프로브 완벽 정리 (0) | 2025.01.23 |
[CKAD] Blue/Green 배포와 Canary 배포 정리 (0) | 2025.01.22 |