Ikhtisar
Amazon EBS CSI driver digunakan untuk mengelola lifecycle pada EBS volume sebagai penyimpanan pada kubernetes. Driver ini memungkinkan kita untuk menggunakan volume EBS dalam aplikasi Kubernetes tanpa perlu melakukan perubahan apa pun pada kode aplikasi.
Driver ini terdiri dari dua komponen utama:
Controller: Komponen ini bertanggung jawab untuk membuat, menghapus, dan memodifikasi volume EBS.
Node: Komponen ini bertanggung jawab untuk memasang dan melepaskan volume EBS ke node Kubernetes.
Adapun langkah-langkah yang akan dilakukan pada tulisan ini adalah sebagai berikut:
Membuat IAM policy
Attach policy
Deploy amazon EBS CSI driver
Hapus Resource
Prasyarat
- Cluster EKS, jika belum membuat cluster bisa lihat disini
Langkah-langkah
Step 01 - Membuat IAM policy
Ke Services -> IAM
Klik Create a Policy
Pilih tab JSON dan copy json dibawah ini
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:AttachVolume",
"ec2:CreateSnapshot",
"ec2:CreateTags",
"ec2:CreateVolume",
"ec2:DeleteSnapshot",
"ec2:DeleteTags",
"ec2:DeleteVolume",
"ec2:DescribeInstances",
"ec2:DescribeSnapshots",
"ec2:DescribeTags",
"ec2:DescribeVolumes",
"ec2:DetachVolume"
],
"Resource": "*"
}
]
}
Klik Next
Policy Name: Amazon_EBS_CSI_Driver
Description: Policy for EC2 Instances to access Elastic Block Store for EKS
Klick Create Policy
Step 02 - Attach Policy
- Catat IAM role
kubectl -n kube-system describe configmap aws-auth
Berikut contoh outputnya :
rolearn: arn:aws:iam::180789647333:role/eksctl-eksdemo1-nodegroup-eksdemo-NodeInstanceRole-IJXXXXX
Masuk ke menu Services -> IAM -> Roles
Cari nama role eksctl-eksdemo1-nodegroup-eksdemo-NodeInstanceRole-IJXXXXX
Klik pada tab Permissions
Klik Attach Policies
Cari Amazon_EBS_CSI_Driver dan klik Attach Policy
Step 3 - Deploy amazon EBS CSI Driver
- Verifikasi versi kubectl
kubectl version --client --short
- Deploy Amazon EBS CSI Driver
kubectl apply -k "github.com/kubernetes-sigs/aws-ebs-csi-driver/deploy/kubernetes/overlays/stable/?ref=master"
- Verifikasi ebs-csi pods sudah running
kubectl get pods -n kube-system
Berikut contoh outputnya:
NAME READY STATUS RESTARTS AGE
aws-node-5rbxn 1/1 Running 0 34m
aws-node-kgcst 1/1 Running 0 34m
coredns-7975d6fb9b-4bq22 1/1 Running 0 46m
coredns-7975d6fb9b-v2542 1/1 Running 0 46m
ebs-csi-controller-7bb8f9f7bc-mlpnn 6/6 Running 0 23s
ebs-csi-controller-7bb8f9f7bc-vwcsw 6/6 Running 0 23s
ebs-csi-node-dtjt8 3/3 Running 0 19s
ebs-csi-node-swmxt 3/3 Running 0 19s
kube-proxy-226z7 1/1 Running 0 34m
kube-proxy-zl8p2 1/1 Running 0 34m