static versioning eks
Disini kita akan membuat dan men-consume PersistentVolume
dari volume EBS yang sudah ada dengan static provisioning pada service EKS. Kemudian volume tersebut dimount kedalam pod dari filesystem nodenya. Contoh detailnya saya pelajari dari sini aws-ebs-csi-driver / static provisioning.
Static provisioning, artinya kita sebagai administrator yang menentukan berapa size volume EBS (pada persistent volume (pv)) yang ingin digunakan.
Membuat Static Provisioning
Kita perlu 3 buah file yaml:
- claim.yaml -> membuat persistent volume claim
- pv.yaml -> membuat persistent volume
- pod.yaml -> membuat pod yang kemudian volume EBSnya akan dimount ke dalam pod ini
Langkah-langkahnya adalah sebagai berikut:
- Mengattach volume EBS ke Instance / node EKS
- Buat dan apply file pv.yaml
- Buat dan apply file claim.yaml
- Buat dan apply file pod.yaml
- Login ke pod untuk melihat volume EBS sudah termount
1. Mengattach volume EBS ke instance
Pertama kita harus mengattach volume EBSnya dulu ke instance / node EKS
- Pilih volume EBS
- Actions > Attach Volume > Lalu kaitkan ke instance yang diinginkan
Jika sudah terattach maka tampilannya seperti dibawah:
2. Buat dan apply file pv.yaml
Pertama kita buat file konfigurasi persistent volume dengan nama pv.yaml
pv.yaml
apiVersion: v1
kind: PersistentVolume
metadata:
name: test-pv
spec:
accessModes:
- ReadWriteOnce
capacity:
storage: 5Gi
csi:
driver: ebs.csi.aws.com
fsType: ext4
volumeHandle: vol-006xxx
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: topology.ebs.csi.aws.com/zone
operator: In
values:
- ap-southeast-1a
- Kita set capacitynya 5Gi (5GB)
- Ganti volumeHandle dengan volume-id kalian
- Volume EBS saya berada di AZ (Availability Zone) ap-southeast-1a. Harap ganti dengan AZ kalian
Kita apply konfigurasinya (saya menggunakan kubectl disini) dan cek pv nya:
$ kubectl apply -f pv.yaml
$ kubectl get pv
3. Buat dan apply file claim.yaml
Buat persistent volume claim dengan nama claim.yaml
claim.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: ebs-claim
spec:
storageClassName: "" # Empty string must be explicitly set otherwise default StorageClass will be set
volumeName: test-pv
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
- Panggil persistent volume yang sebelumnya sudah kita buat dengan
volumeName: test-pv
- Sesuaikan lagi storagenya,
storage: 5Gi
Lalu apply konfigurasinya dan cek pvcnya:
$ kubectl apply -f claim.yaml
$ kubectl get pvc
4. Buat dan apply file pod.yaml
Terakhir kita buat file pod.yaml
pod.yaml
apiVersion: v1
kind: Pod
metadata:
name: app
spec:
containers:
- name: app
image: centos
command: ["/bin/sh"]
args: ["-c", "while true; do echo $(date -u) >> /data/out.txt; sleep 5; done"]
volumeMounts:
- name: persistent-storage
mountPath: /data
volumes:
- name: persistent-storage
persistentVolumeClaim:
claimName: ebs-claim
- Podnya menggunakan image centos
- command dan args diatas untuk menggenerate file out.txt dan diisikan dengan tanggal
- panggil persistent volume claim (yang sudah kita buat) dengan
claimName: ebs-claim
- lalu mount ke dalam pod pvc tersebut, dengan volumeMounts,
mountPath: /data
Apply konfigurasinya dan cek podnya:
$ kubectl apply -f pod.yaml
$ kubectl get pods -o wide
5. Login ke pod untuk melihat volume EBS sudah termount
Login ke podnya menggunakan command berikut:
$ kubectl exec -it app bash
Sebelumnya volume EBS kita mount ke path /data
pada container, jadi kita cek path tersebut:
$ ls -al /data
Bisa dilihat ada file out.txt yang digenerate dari command
and args
pada pod.yaml.
Sementara ada folder prometheus, itu merupakan folder saya yang sudah ada sebelumnya di volume EBS, jadi ikut termount juga.
Demikian tutorial static versioning eks, semoga bermanfaat!