Klaster DKubes menyediakan solusi penyimpanan data yang andal dan terdistribusi, guna mendukung kinerja serta keberlanjutan aplikasi yang berjalan di dalamnya. Pada klaster DKubes, penyimpanan persisten (persistent storage) menjadi elemen penting bagi aplikasi yang membutuhkan penyimpanan data jangka panjang dan harus tetap tersedia meskipun aplikasi atau node dimatikan.
Salah satu metode yang umum digunakan untuk menyediakan penyimpanan bersama antar node dalam klaster adalah dengan menggunakan DCloud File System (DFS). DFS adalah protokol file sharing yang memungkinkan seluruh node dalam klaster berbagi penyimpanan yang sama, sehingga memfasilitasi pengelolaan data aplikasi yang bersifat stateful.
Melalui DFS, volume penyimpanan dapat diakses secara bersamaan oleh banyak pod, yang sangat ideal untuk aplikasi yang memerlukan akses baca tulis dari beberapa node secara simultan.
Untuk melakukan proses konfigurasi DFS pada klaster DKubes dapat mengikuti langkah-langkah dibawah ini.
- Pastikan memiliki layanan DKubes yang sudah aktif dan terkonfigurasi dengan baik.

- Mendownload file kubeconfig untuk mengelola klaster DKubes dan simpan pada path sesuai preferensi Anda.
- Pastikan memiliki layanan DCloud File System (DFS) yang sudah aktif dan seluruh IP Worker dari DKubes telah dimasukkan ke dalam konfigurasi DFS sehingga klaster dapat mengakses layanan DFS.

- Pastikan Anda memiliki akses ke kubectl untuk mengelola dan mengadministrasikan DKubes
- Pastikan Anda memiliki akses ke Helm untuk mempermudah proses deployment aplikasi pada DKubes.
- Tambahkan repository helm yang berisi chart untuk NFS Subdirectory External Provisioner dengan menjalankan perintah berikut.
helm repo add nfs-subdir-external-provisioner https://kubernetes-sigs.github.io/nfs-subdir-external-provisioner/ - Perbarui chart helm yang baru ditambahkan dengan menjalankan perintah berikut.
helm repo update - Langkah selanjutnya, menginstal NFS Subdir External Provisioner di namespace nfs-provisioning. Proses ini akan mengonfigurasi IP dan Path dari layanan DFS yang akan digunakan sebagai penyimpanan.
helm install -n nfs-provisioning --create-namespace nfs-subdir-external-provisioner nfs-subdir-external-provisioner/nfs-subdir-external-provisioner --set nfs.server=<Masukkan IP DFS Anda> --set nfs.path=<Masukkan Path DFS Anda>

- Setelah instalasi berhasil, verifikasi semua resource di namespace. Namespace digunakan untuk mengatur komponen yang terkait dengan provisioning penyimpanan DFS di DKubes, dengan menjalankan perintah berikut.
kubectl -n nfs-provisioning get all

- Periksa daftar StorageClass yang ada di DKubes dapat menjalankan perintah berikut.
kubectl get sc

- Membuat file YAML Persistent Volume Claim (PVC) yang digunakan untuk meminta volume penyimpanan persisten yang dapat diakses oleh pod-pod dalam suatu namespace. Berikut contoh file nfs-pvc.yaml:
apiVersion: v1 kind: PersistentVolumeClaim metadata: name: myvol1 namespace: default spec: accessModes: - ReadWriteOnce storageClassName: nfs-client resources: requests: storage: 1Gi

12. Membuat file YAML Deployment yang digunakan untuk mengelola replika pod dari suatu aplikasi. Berikut contoh file nfs-dep.yaml:
apiVersion: apps/v1 kind: Deployment metadata: labels: app: web name: web spec: replicas: 1 selector: matchLabels: app: web template: metadata: labels: app: web spec: containers: - name: web image: nginx ports: - name: web containerPort: 80 hostPort: 8081 protocol: TCP volumeMounts: - mountPath: "/usr/share/nginx/html" name: mypd volumes: - name: mypd persistentVolumeClaim: claimName: myvol1
13. Setelah membuat file YAML, Anda dapat menerapkannya pada klaster DKubes dengan menjalankan perintah berikut.
kubectl apply -f nfs-pvc.yaml
kubectl apply -f nfs-dep.yaml

14. Menampilkan status keseluruhan klaster DKubes di namespace dapat menjalankan perintah berikut.
Kubectl get all

15. Menampilkan status daftar Persistent Volume Claim (PVC) di namespace dapat menjalankan perintah berikut.
Kubectl get pvc

16. Mengakses pod dan mengubah halaman Nginx dapat menjalankan perintah berikut.
kubectl exec -it pod/web-674c5bd59d-z7dqv -- /bin/bash
![]()
17. Setelah masuk ke dalam pod, buat konten halaman web dengan menjalankan perintah berikut.
echo"<h1>DFS in Kubernetes</h1>"> /usr/share/nginx/html/index.html
curl localhost

18. Membuat service untuk mengakses aplikasi dari luar cluster dapat menjalankan perintah berikut.
kubectl expose deployment web --type=NodePort --port=80
![]()
19. Setelah service berhasil dibuat, aplikasi dapat diakses melalui IP Worker node dengan port yang diberikan oleh DKubes.
