AWS EKS 을 사용하면서 서비스 어카운트 라는 개념을 접하여 공부하고 나중에 볼 수 있도록 정리해야겠다.
k8s Acoount 종류
- User Account : 운영자 또는 개발자 등이 클러스터를 운영하는데 활용
- Service Account : 쿠버네티스 서비스 또는 써드파티 서비스(프로메테우스, 젠킨스 등)가 사용하는 계정
쿠버네티스 공식 문서에서는
사용자 어카운트는 사람을 위한 것이지만, 서비스 어카운트는 쿠버네티스의 경우 파드의 일부 컨테이너에서 실행되는 애플리케이션 프로세스를 위한 것이다. 라고 정의되어 있다.
또한 serviceaccout을 사용하려면 토큰을 생성해야한다.(이전버전에는 자동으로 생성되었는데 1.24 이후 버전부턴 토큰을 따로 생성해야 한다.)
ServiceAccout을 이용하면 pod 별로 리소스를 제어하고 관리하는데 용이하다.
Service Account 생성
kubectl create serviceaccount test
이후 확인해보면 이렇게 test 라는 service account 가 생성된것을 볼 수 있다.
토큰 생성
kubectl create token test
서비스어카운트 미적용
일단 기본으로 아무설정하지 않고 nginx pod을 생성해보고 yaml파일을 읽어보자
apiVersion: v1
kind: Pod
metadata:
name: nginx-pod
spec:
containers:
- name: nginx-pod
image: nginx
ports:
- containerPort: 80
####################
kubectl get pod nginx-pod -o yaml
서비스어카운트 적용
이번엔 서비스어카운트를 설정해보자
apiVersion: v1
kind: Pod
metadata:
name: nginx-sa
spec:
serviceAccountName: test
automountServiceAccountToken: true
containers:
- name: nginx-sa
image: nginx
ports:
- containerPort: 80
################
kubectl get pod nginx-sa -o yaml
이제 실제 저 nginx-sa 라는 파드에 접속하여 토큰이 있는지 확인해보자
kubectl exec nginx-sa -it /bin/bash
root@nginx-sa: cd /var/run/secrets/kubernetes.io/serviceaccount/
root@nginx-sa: ls -al
yml 파일
apiVersion: v1
kind: ServiceAccount
metadata:
name : sa-test
namespace: default
--- ## 토큰 생성
apiVersion: v1
kind: Secret
type: kubernets.io/service-account-token
metadata:
name: sa-token
namespace: default
annotations:
kubernets.io/service-account.name: "sa-test"
다음번에는 service account에 role binding 하는법에 대해 알보도록 하겠습니다.
'Docker, k8s' 카테고리의 다른 글
jar 파일을 실행시키는 Dockerfile 만들기 (0) | 2023.10.15 |
---|---|
k8s_Volume (2) Persistent Volume (0) | 2023.10.02 |
k8s_ deployment 배포 전략 (0) | 2023.09.22 |
k8s_로드밸런스 Metallb (0) | 2023.09.20 |
k8s_ Autoscaling Metric Server(HPA) (0) | 2023.09.18 |