AWS EBS CSI 드라이버는 Kubernetes 클러스터에서 Amazon Elastic Block Store (EBS) 볼륨을 동적으로 프로비저닝하는 데 사용됩니다.
AWS 블록 수준 스토리지 서비스로, EBS는 대규모 데이터베이스, 파일 시스템, 컨테이너 등 다양한 워크로드에서 사용할 수 있습니다.
AWS EKS에서 add-on 방식으로 설치하는 방법을 기록으로 남깁니다.
제가 생각하는 가장 쉬운 방법으로 설치할 것이고 5-10분 정도 걸립니다.
IAM Policy와 Role 설정
eksctl로 생성하는 방법이 가장 쉽습니다. (Console과 AWS CLI로 설정하는 방법도 있습니다. 공식문서를 참고해주세요)
다음의 커맨드에서 cluster 이름을 변경하고 그대로 입력하면 됩니다.
eksctl create iamserviceaccount \
--name ebs-csi-controller-sa \
--namespace kube-system \
--cluster <my-cluster> \
--attach-policy-arn arn:aws:iam::aws:policy/service-role/AmazonEBSCSIDriverPolicy \
--approve \
--role-only \
--role-name AmazonEKS_EBS_CSI_DriverRole
Bash
복사
AWS EKS의 Add-on으로 CSI 드라이버 설치
1.
‘Get more add-ons’ 버튼을 클릭해주세요.
2.
Amazon EBS CSI 드라이버를 클릭합니다.
(저는 이미 설치해서 이미지를 다른 블로그에서 가져왔습니다)
3.
버전과 IAM 역할(Role)을 선택하고 생성합니다.
IAM Role은 (1)의 eksctl로 생성하였다면, AmazonEKS_EBS_CSI_DriverRole 로 되어 있을 것입니다.
4.
일정 시간 기다리면 다음과 같이 설치가 완료된 것을 확인할 수 있습니다
(추가 팁) Storage class에서 gp3 사용하기
AWS EBS 볼륨에서 gp2 유형에 비해서 gp3 유형은 더 좋은 성능과 더 저렴한 비용을 제공합니다.
그래서 gp3를 기본적으로 사용할 것을 추천해드리고 싶습니다.
EBS CSI Driver를 설치하면 gp2만 설치되어있고, 기본으로 잡혀있는 것을 확인할 수 있습니다.
# kubectl get sc 15:24:02
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
gp2 (default) kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 201d
Bash
복사
gp3-sc.yml 파일을 만듭니다
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: gp3
provisioner: kubernetes.io/aws-ebs
parameters:
type: gp3
fstype: ext4
YAML
복사
그리고 다음 kubectl로 gp3-sc.yml을 실행합니다
kubectl apply -f gp3-sc.yml
Bash
복사
다시 storage class 리소스를 확인해보면, gp3가 생성된 것을 확인할 수 있습니다
# kubectl get sc 15:24:02
NAME PROVISIONER RECLAIMPOLICY VOLUMEBINDINGMODE ALLOWVOLUMEEXPANSION AGE
gp2 (default) kubernetes.io/aws-ebs Delete WaitForFirstConsumer false 201d
gp3 kubernetes.io/aws-ebs Delete Immediate false 21h
Bash
복사