| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 국비지원교육
- Python
- grafana
- eks endpoint access
- aews
- docker
- prometheus
- 클라우드 국비지원교육 후기
- 도커
- Terraform
- 클라우드 국비지원교육
- 합격 후기
- keda
- kubernetes
- aews ci/cd
- AWS
- Jenkins
- outposts local cluster
- karpenter
- POD
- EKS
- observability
- k8s
- VPA
- storageclass
- 외부 모듈
- aws outposts
- aews vault
- 단기 합격
- 클라우드 엔지니어
- Today
- Total
모험가
EKS on Outposts - EBS CSI Driver 배포 본문
* 잘못된 정보들은 계속해서 수정할 예정이니 말씀 부탁드리겠습니다.
EBS CSI Driver란?
일반적인 EKS에서 EBS CSI Driver는 기본적으로 관리형 addon으로 설치가 됩니다.
AEWS 3주차 - Storage(PV, PVC, EBS)
본 글은 가시다님이 진행하시는 AEWS(AWS EKS Workshop Study)를 참여하여 정리한 글입니다. 모르는 부분이 많아서 틀린 내용이 있다면 말씀 부탁드리겠습니다! 스토리지 이해 pv를 사용하지 않으면 파
rhims.tistory.com
하지만 Local Cluster는 관리형 addon을 지원하지 않아서 기본적으로 Local Path Provisioner을 이용합니다.
만약 Outposts에서 Local Cluster을 운용하려면 EBS CSI Driver은 Helm으로 설치하시면 될 것 같습니다.
주의 사항
| 기본적으로 EBS CSI Driver은 IRSA(IAM Role for Service Account)로 동작합니다. 하지만 Local Cluster은 IRSA을 지원하지 않으므로 최소 권한에 지장이 있지만, 실습에서는 Node의 Role에 해당 권한을 부여하여 default 사용자가 EBS CSI Driver을 이용해서 EBS을 생성 및 부착 가능하게 합니다. |
EBS CSI Driver 배포
순서는 아래와 같습니다.
1. Data Plane에 부착된 Role에 EBS 관련 권한 추가
2. Helm을 이용한 EBS CSI Driver 배포
3. 테스트 및 검증
Node Role에 EBS 권한 추가
Node에 부착된 Role을 IAM 콘솔에서 확인합니다.

해당 권한 정책중 EBS를 부착할 수 있는 권한이 없습니다.
권한 추가를 클릭하여 [AmazonEBSCSIDriverPolicy]를 클릭하여 추가합니다.

이제 Node들은 EBS를 생성 및 부착할 수 있는 권한을 취득하였습니다.
EBS CSI Driver 배포
Helm을 이용해서 EBS CSI Driver을 배포합니다.
Helm Repo 추가
helm repo add aws-ebs-csi-driver https://kubernetes-sigs.github.io/aws-ebs-csi-driver
helm repo update
배포
helm upgrade --install aws-ebs-csi-driver aws-ebs-csi-driver/aws-ebs-csi-driver \
--namespace kube-system \
--set controller.serviceAccount.create=true \
--set controller.serviceAccount.name=ebs-csi-controller-sa \
--set node.serviceAccount.create=true \
--set node.serviceAccount.name=ebs-csi-node-sa
각 옵션 설명
| 옵션 | 설명 |
| controller.serviceAccount.create=true | 컨트롤러용 서비스 어카운트를 생성하라는 의미입니다. 컨트롤러는 StatefulSet/Deployment 등을 관리하는 중앙 컴포넌트입니다. |
| controller.serviceAccount.name=ebs-csi-controller-sa | 생성되거나 사용할 서비스 어카운트의 이름을 명시합니다. IRSA를 사용하는 경우 이 이름에 IAM 역할을 연결합니다. |
| node.serviceAccount.create=true | 노드 컴포넌트용 서비스 어카운트 생성 여부입니다. ebs-csi-node는 각 노드에 배포되는 DaemonSet입니다. |
| node.serviceAccount.name=ebs-csi-node-sa | 마찬가지로 노드용 서비스 어카운트 이름입니다. 노드에 볼륨을 attach/detach할 때 사용됩니다. |
* EBS CSI Driver은 Daemonset으로 배포되기에 만약 Control Plane에 배포되는 것을 방지하려면
NodeSelector을 이용해서 배포하면 됩니다. ( --set node.nodeSelector."node-role\.kubernetes\.io\/worker"="" )
Selector을 안줄 경우 아래와 같이 남습니다.

테스트 및 검증
아래와 같이 Worker Node들에는 EBS CSI Driver가 배포된 것을 확인할 수 있습니다.

이제 Storage Class, pvc를 배포하고 pod로 띄웠을때 pv(EBS)가 정상적으로 붙는지 확인해봅니다.
StorageClass 배포
yaml 내용
# ebs-sc.yaml
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: ebs-sc
provisioner: ebs.csi.aws.com
volumeBindingMode: WaitForFirstConsumer
parameters:
type: gp2
배포
kubectl apply -f ebs-sc.yaml

pvc 배포
yaml 내용
# ebs-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ebs-test-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 4Gi
storageClassName: ebs-sc
배포
kubectl apply -f ebs-pvc.yaml

이제 pod에서 해당 내용을 참조하여 배포합니다.
Pod 배포
yaml 내용
# ebs-test-pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: ebs-test-pod
spec:
containers:
- name: app
image: busybox
command: [ "sleep", "3600" ]
volumeMounts:
- mountPath: /data
name: ebs-volume
volumes:
- name: ebs-volume
persistentVolumeClaim:
claimName: ebs-test-pvc
배포
kubectl apply -f ebs-test-pod.yaml


정상적으로 pv가 생성되어서 pvc 상태도 Bound로 바뀐 것을 확인가능합니다.
콘솔에서도 생성된 EBS를 확인할 수 있습니다.

이렇게 관리형 addon이 없는 Local Cluster환경에서 EBS CSI Driver을 배포해보았습니다.
'쿠버네티스 > EKS' 카테고리의 다른 글
| EKS on Outposts Observability(OTEL, Prometheus, Tempo, Loki, Grafana) (2) | 2025.05.29 |
|---|---|
| EKS on Outposts - Local Cluster 배포 및 ELB 확인 (0) | 2025.03.21 |