쿠버네티스 서비스 어카운트(ServiceAccounts) 완벽 가이드

SeungHyuk Shin·2023년 4월 3일
0


쿠버네티스(Kubernetes, 이하 k8s)는 컨테이너 오케스트레이션 플랫폼으로서 인기를 얻고 있는데, 그 이유는 이 플랫폼이 애플리케이션 배포, 스케일링 및 관리에 많은 편의성을 제공하기 때문입니다. 이 글에서는 k8s에서 중요한 요소 중 하나인 서비스 어카운트(ServiceAccounts)에 대해 상세하게 살펴보겠습니다.

1.서비스 어카운트란?

서비스 어카운트는 k8s에서 애플리케이션의 인증 및 권한 관리를 담당하는 객체입니다. 쿠버네티스 클러스터 내에서 실행되는 애플리케이션은 기본적으로 API 서버와 상호 작용해야 하는데, 이 때 서비스 어카운트를 사용해 API에 접근 권한을 부여받습니다. 서비스 어카운트는 애플리케이션에 필요한 인증 및 권한 관리를 효과적으로 수행하며, 보안상의 이슈를 최소화할 수 있습니다.

2. 서비스 어카운트 생성하기

서비스 어카운트를 생성하는 가장 간단한 방법은 kubectl 명령어를 사용하는 것입니다. 다음 명령어를 사용하면 새로운 서비스 어카운트를 생성할 수 있습니다.

kubectl create serviceaccount [서비스어카운트명]

3.서비스 어카운트와 롤 바인딩

서비스 어카운트가 생성되면, 이에 적절한 권한을 부여하기 위해 롤(Role) 또는 클러스터롤(ClusterRole)을 바인딩해야 합니다. 롤 바인딩(RoleBinding)을 사용하여 특정 네임스페이스에 권한을 부여하거나, 클러스터롤 바인딩(ClusterRoleBinding)을 사용하여 전체 클러스터에 권한을 부여할 수 있습니다.

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata:
  name: [롤바인딩명]
  namespace: [네임스페이스]
subjects:
- kind: ServiceAccount
  name: [서비스어카운트명]
  namespace: [네임스페이스]
roleRef:
  kind: Role
  name: [롤 이름]
  apiGroup: rbac.authorization.k8s.io

4. 서비스 어카운트 사용하기

서비스 어카운트를 사용하려면, 파드 매니페스트에서 spec.template.spec.serviceAccountName 필드에 서비스 어카운트 이름을 지정해야 합니다.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 1
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      serviceAccountName: [서비스어카운트명]
      containers:
      - name: my-container
        image: my-image

5.서비스 어카운트 관리

서비스 어카운트에 대한 정보를 확인하거나 수정하려면, kubectl 명령어를 사용할 수 있습니다.

  • 서비스 어카운트 목록 조회: kubectl get serviceaccounts
  • 서비스 어카운트 정보 조회: kubectl describe serviceaccount [서비스어카운트명]
  • 서비스 어카운트 수정: kubectl edit serviceaccount [서비스어카운트명]
  • 서비스 어카운트 삭제: kubectl delete serviceaccount [서비스어카운트명]

0개의 댓글