Storage Class dapat mempermudah user untuk pneggunaan storage pada container orchestration. Dengan Storage Class, user hanya perlu membuat sebuah Persisten Volume Claim (PVC) dan tanpa perlu sentuhan sedikitput di ranah Persistent Volume atatu NFS server untuk menggunakan layanan storage.
Pada tutorial ini kita menggunakan Kubernetes Incubator untuk membangun Storage Class dan automatic storage provisioning
Berikut adalah requirement yg dibutuhkan :
- Red Hat OpenShift
- NFS Server
Berikut adalah tutorial untuk membangun Storage Class :
1 2 |
[root@helper ~]# git clone https://github.com/pieterdauds/openshift-nfs-storageclass.git [root@helper ~]# cd openshift-nfs-storageclass/deploy |
Membuat project dengan nama openshift-nfs-storage
1 2 |
[root@helper ~]# oc new-project openshift-nfs-storage [root@helper ~]# oc label namespace openshift-nfs-storage "openshift.io/cluster-monitoring=true" |
Deploy RBAC untuk nfs storage class
1 |
[root@helper ~]# oc create -f rbac.yaml |
Update permission Service Account
1 |
[root@helper ~]# oc adm policy add-scc-to-user hostmount-anyuid system:serviceaccount:openshift-nfs-storage:nfs-client-provisioner |
Ubah file yaml untuk menyesuaikan environtment, ada 2 file yaml yang perlu di ubah, yaitu file deployment.yaml (automatic storage provision) dan file class.yaml (Storage Class) :
class.yaml
Key | Value |
provisioner | helper.ocpdev/nfs |
deployment.yaml
Environtment Variable Name | Value |
PROVISIONER_NAME | helper.ocpdev/nfs |
NFS_SERVER | 192.168.1.10 |
NFS_PATH | /mnt/nfs-storage |
Berikut adalah hasil file yang sudah di ubah.
class.yaml
1 2 3 4 5 6 7 8 |
[root@helper ~]# cat class.yaml apiVersion: storage.k8s.io/v1 kind: StorageClass metadata: name: helper-nfs-storage provisioner: helper.ocpdev/nfs # or choose another name, must match deployment's env PROVISIONER_NAME' parameters: archiveOnDelete: "false" |
deployment.yaml
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 29 30 31 32 33 34 35 36 37 38 39 40 |
[root@helper ~]# cat deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: nfs-client-provisioner labels: app: nfs-client-provisioner # replace with namespace where provisioner is deployed namespace: openshift-nfs-storage spec: replicas: 1 strategy: type: Recreate selector: matchLabels: app: nfs-client-provisioner template: metadata: labels: app: nfs-client-provisioner spec: serviceAccountName: nfs-client-provisioner containers: - name: nfs-client-provisioner image: quay.io/external_storage/nfs-client-provisioner:latest volumeMounts: - name: nfs-client-root mountPath: /persistentvolumes env: - name: PROVISIONER_NAME value: helper.ocpdev/nfs - name: NFS_SERVER value: 192.168.1.10 - name: NFS_PATH value: /mnt/nfs-storage volumes: - name: nfs-client-root nfs: server: 192.168.1.10 path: /mnt/nfs-storage |
Deploy Storage Class dan Deployment yang baru saja kita ubah.
StorageClass :
1 |
[root@helper ~]# oc create -f class.yaml |
1 2 3 |
[root@helper ~]# oc get storageclass NAME PROVISIONER AGE helper-nfs-storage helper.ocpdev/nfs 1m |
Deployment :
1 |
[root@helper ~]# oc apply -f deployment.yaml |
1 2 3 |
[root@helper ~]# oc get pods NAME READY STATUS RESTARTS AGE nfs-client-provisioner-774b9f6b94-knb9f 0/1 Running 5 1m |
Console >> Administrator >> Storage > Storage Class
Sampai di sini Storage Class sudah dapat di gunakan.
Untuk melakukan percobaan apakah storage class tersebut sudah bisa di gunakan kita dapat melakukan pengetesan PVC dengan menggunakan file test-claim.yaml. File tersebut melakukan pembuatan PVC dengan memanggil storage class bernama helper-nfs-storage.
1 2 |
[root@helper deploy]# oc create -f test-claim.yaml persistentvolumeclaim/test-claim created |
Cek pv dan pvc :
1 2 3 |
[root@helper deploy]# oc get pvc NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE test-claim Bound pvc-cae8b478-f893-49b4-b533-1c0340c4aeb2 1Mi RWX helper-nfs-storage 24s |
Secara otomatis PV akan ter create secara otomatis.
1 2 |
[root@helper deploy]# oc get pv pvc-cae8b478-f893-49b4-b533-1c0340c4aeb2 1Mi RWX Delete Bound openshift-nfs-storage/test-claim helper-nfs-storage 72s |
Semoga Bermanfaat . . .
Sumber :
https://github.com/kubernetes-retired/external-storage
Komentar