From 31b6ae2c65987864364ad045de17e79512e3d467 Mon Sep 17 00:00:00 2001 From: mufti ismi Date: Mon, 1 Jun 2020 12:48:40 +0700 Subject: [PATCH] add bahasa translation for task configure persistent volume storage --- .../configure-persistent-volume-storage.md | 284 ++++++++++++++++++ .../id/examples/pods/storage/pv-claim.yaml | 11 + content/id/examples/pods/storage/pv-pod.yaml | 18 ++ .../id/examples/pods/storage/pv-volume.yaml | 14 + 4 files changed, 327 insertions(+) create mode 100644 content/id/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md create mode 100644 content/id/examples/pods/storage/pv-claim.yaml create mode 100644 content/id/examples/pods/storage/pv-pod.yaml create mode 100644 content/id/examples/pods/storage/pv-volume.yaml diff --git a/content/id/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md b/content/id/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md new file mode 100644 index 0000000000..22e13e2c8a --- /dev/null +++ b/content/id/docs/tasks/configure-pod-container/configure-persistent-volume-storage.md @@ -0,0 +1,284 @@ +--- +title: Mengatur Pod untuk Penyimpanan dengan PersistentVolume +content_template: templates/task +weight: 60 +--- + +{{% capture overview %}} + +Laman ini akan menjelaskan bagaimana kamu dapat mengatur sebuah Pod dengan menggunakan +{{< glossary_tooltip text="PersistentVolumeClaim" term_id="persistent-volume-claim" >}} +untuk penyimpanan. +Berikut ringkasan prosesnya: + +1. Kamu, sebagai seorang administrator klaster, membuat sebuah PersistentVolume yang didukung oleh penyimpanan +fisik. Kamu tidak mengaitkan volume dengan Pod apapun. + +2. Kamu, sekarang mengambil peran sebagai seorang _developer_ / pengguna klaster, membuat sebuah +PersistentVolumeClaim yang secara otomatis terikat dengan PersistentVolume yang sesuai. + +3. Kamu membuat sebuah Pod yang menggunakan PersistentVolumeClaim di atas untuk penyimpanan. + +{{% /capture %}} + +{{% capture prerequisites %}} + +* Kamu membutuhkan sebuah klaster Kubernetes yang hanya memiliki satu Node, dan +{{< glossary_tooltip text="kubectl" term_id="kubectl" >}} +alat baris perintah yang sudah diatur untuk berkomunikasi dengan klaster kamu. Jika kamu +tidak memiliki sebuah klaster dengan Node tunggal, kamu dapat membuatnya dengan +[Minikube](/docs/getting-started-guides/minikube). + +* Familiar dengan materi di +[Persistent Volumes](/id/docs/concepts/storage/persistent-volumes/). + +{{% /capture %}} + +{{% capture steps %}} + +## Membuat sebuah berkas index.html di dalam Node kamu + +Buka sebuah _shell_ ke Node tunggal di klaster kamu. Bagaimana kamu membuka sebuah _shell_ tergantung +dengan bagaimana kamu mengatur klaster kamu. Contoh, jika kamu menggunakan Minikube, kamu +dapat membuka sebuah _shell_ ke Node kamu dengan memasukkan `minikube ssh`. + +Di dalam _shell_ kamu pada Node itu, buat sebuah direktori dengan nama `/mnt/data`: + +```shell +# Asumsikan Node kamu menggunakan "sudo" untuk menjalankan perintah +# sebagai superuser +sudo mkdir /mnt/data +``` + + +Di dalam direktori `/mnt/data`, buat sebuah berkas dengan nama `index.html`: + +```shell +# Disini kembali asumsikan bahwa Node kamu menggunakan "sudo" untuk menjalankan perintah +# sebagai superuser +sudo sh -c "echo 'Hello from Kubernetes storage' > /mnt/data/index.html" +``` + +{{< note >}} +Jika Node kamu menggunakan alat untuk mengakses _superuser_ selain dengan `sudo`, kamu dapat +membuat ini bekerja jika mengganti `sudo` dengan nama dari alat lainnya. +{{< /note >}} + +Menguji bahwa berkas `index.html` ada: + +```shell +cat /mnt/data/index.html +``` + +Keluaran akan seperti ini: +``` +Hello from Kubernetes storage +``` + +Sekarang kamu dapat menutup _shell_ di Node kamu. + +## Membuat sebuah PersistentVolume + +Pada latihan ini, kamu akan membuat sebuah *hostPath* PersistentVolume. Kubernetes mendukung +hostPath untuk pengembangan dan pengujian di dalam klaster Node tunggal. Sebuah hostPath +PersistentVolume menggunakan berkas atau direktori di dalam Node untuk meniru penyimpanan terhubung jaringan (NAS, _network-attached storage_). + +Di dalam klaster _production_, kamu tidak dapat menggunakan hostPath. Sebagai gantinya sebuah administrator klaster +akan menyediakan sumberdaya jaringan seperti Google Compute Engine _persistent disk_, +_NFS share_, atau sebuah Amazon Elastic Block Store volume. Administrator klaster juga dapat +menggunakan [StorageClass](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#storageclass-v1-storage) +untuk mengatur +[_provisioning_ secara dinamis](https://kubernetes.io/blog/2016/10/dynamic-provisioning-and-storage-in-kubernetes). + +Berikut berkas konfigurasi untuk hostPath PersistentVolume: + +{{< codenew file="pods/storage/pv-volume.yaml" >}} + +Berkas konfigurasi tersebut menentukan bahwa volume berada di `/mnt/data` pada +klaster Node. Konfigurasi tersebut juga menentukan ukuran dari 10 gibibytes dan +mode akses `ReadWriteOnce`, yang berarti volume dapat di pasang sebagai +_read-write_ oleh Node tunggal. Konfigurasi ini menggunakan [nama dari StorageClass](/id/docs/concepts/storage/persistent-volumes/#kelas) +`manual` untuk PersistentVolume, yang akan digunakan untuk mengikat +permintaan PeristentVolumeClaim ke PersistentVolume ini. + +Membuat sebuah PersistentVolume: + +```shell +kubectl apply -f https://k8s.io/examples/pods/storage/pv-volume.yaml +``` + +Melihat informasi tentang PersistentVolume: + +```shell +kubectl get pv task-pv-volume +``` + +Keluaran menunjuk PersistentVolume memliki sebuah `STATUS` dari `Available`. Ini +berarti PersistentVolume belum terikat ke PersistentVolumeClaim. + + NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE + task-pv-volume 10Gi RWO Retain Available manual 4s + +## Membuat sebuah PersistentVolumeClaim + +Langkah selanjutnya adalah membuat sebuah PersistentVolumeClaim. Pod menggunakan PersistentVolumeClaim +untuk meminta penyimpanan fisik. Pada latihan ini, kamu akan membuat sebuah PersistentVolumeClaim +yang meminta sebuah volume minimal tiga gibibytes dengan mode akses _read-write_ +setidaknya untuk satu Node. + +Berikut berkas konfigurasi untuk PersistentVolumeClaim: + +{{< codenew file="pods/storage/pv-claim.yaml" >}} + +Membuat sebuah PersistentVolumeClaim: + + kubectl apply -f https://k8s.io/examples/pods/storage/pv-claim.yaml + +Setelah membuat sebuah PersistentVolumeClaim, Kubernetes _control plane_ terlihat +untuk sebuah PersistentVolumeClaim yang memenuhi persyaratan _claim's_. Jika +_control plane_ menemukan PersistentVolume yang cocok dengan StorageClass, maka +akan mengikat _claim_ ke dalam volume tersebut. + +Lihat kembali PersistentVolume: + +```shell +kubectl get pv task-pv-volume +``` + +Sekarang keluaran menunjukan sebuah `STATUS` dari `Bound`. + + NAME CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM STORAGECLASS REASON AGE + task-pv-volume 10Gi RWO Retain Bound default/task-pv-claim manual 2m + +Lihat PersistentVolumeClaim: + +```shell +kubectl get pvc task-pv-claim +``` + +Keluaran menunjukan PersistentVolumeClaim terlah terikat dengan PersistentVolume, +`task-pv-volume`. + + NAME STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE + task-pv-claim Bound task-pv-volume 10Gi RWO manual 30s + +## Membuat sebuah Pod + +Langkah selanjutnya adalah membuat sebuah Pod yang akan menggunakan PersistentVolumeClaim sebagai volume. + +Berikut berkas konfigurasi untuk Pod: + +{{< codenew file="pods/storage/pv-pod.yaml" >}} + +Perhatikan bahwa berkas konfigurasi Pod menentukan sebuah PersistentVolumeClaim, tetapi +tidak menentukan PeristentVolume. Dari sudut pandang Pod, _claim_ adalah volume. + +Membuat Pod: + +```shell +kubectl apply -f https://k8s.io/examples/pods/storage/pv-pod.yaml +``` + +Pastikan bahwa Container di dalam Pod berjalan: + +```shell +kubectl get pod task-pv-pod +``` + +Mendapatkan sebuah _shell_ ke Container yang sedang berjalan di Pod kamu: + +```shell +kubectl exec -it task-pv-pod -- /bin/bash +``` + +Di dalam _shell_, pastikan bahwa nginx menyajikan berkas `index.html` dari dalam +hostPath volume: + +```shell +# Pastikan kamu menjalankan 3 perintah ini di dalam shell root yang berasal dari +# "kubectl exec" dari langkah sebelumnya +apt update +apt install curl +curl http://localhost/ +``` + +Keluaran akan menunjukan sebuah teks yang telah kamu tulis di berkas `index.html` +di dalam hostPath volume: + + Hello from Kubernetes storage + + +Jika kamu melihat pesan tersebut, kamu telah berhasil mengatur sebuah Pod +untuk menggunakan penyimpanan dari PersistentVolumeClaim. + +## Membersihkan + +Hapus Pod, PersistentVolumeClaim dan PersistentVolume: + +```shell +kubectl delete pod task-pv-pod +kubectl delete pvc task-pv-claim +kubectl delete pv task-pv-volume +``` + +Jika kamu belum memiliki _shell_ yang telah dibuka ke Node di klaster kamu, +buka _shell_ baru dengan cara yang sama yang telah kamu lakukan sebelumnya. + +Di dalam _shell_ Node kamu, hapus berkas dan direktori yang telah kamu buat: + +```shell +# Asumsikan Node kamu menggunakan "sudo" untuk menjalankan perintah +# sebagai superuser +sudo rm /mnt/data/index.html +sudo rmdir /mnt/data +``` + +Sekarang kamu dapat menutup _shell_ Node kamu. + +{{% /capture %}} + + +{{% capture discussion %}} + +## Kontrol akses + +Penyimpanan yang telah terkonfigurasi dengan group ID (GID) memungkinkan akses menulis hanya dari Pod yang menggunakan +GID yang sama. GID yang tidak cocok atau hilang akan menyebabkan kesalahan izin ditolak. Untuk mengurangi +kebutuhan koordinasi dengan pengguna, administrator dapat membuat anotasi sebuah PersistentVolume +dengan GID. Kemudian GID akan otomatis ditambahkan ke Pod yang menggunakan PersistentVolume. + +Gunakan anotasi `pv.beta.kubernetes.io/gid` sebagai berikut: +```yaml +apiVersion: v1 +kind: PersistentVolume +metadata: + name: pv1 + annotations: + pv.beta.kubernetes.io/gid: "1234" +``` +Ketika sebuah Pod mengkonsumsi PersistentVolume yang memiliki anotasi GID, anotasi GID tersebut +akan diterapkan ke semua container di dalam Pod dengan cara yang sama yang ditentukan di dalam GID Pod security context. +Settiap GID, baik berasal dari anotasi PersistentVolume atau Pod, diterapkan pada proses pertama yang dijalankan +di setiap container. + +{{< note >}} +Ketika sebuah Pod mengkonsumsi PersistentVolume, GID yang terkait dengan PersistentVolume +tidak ada di dalam sumberdaya Pod itu sendiri. +{{< /note >}} + +{{% /capture %}} + + +{{% capture whatsnext %}} + +* Belajar lebih lanjut tentang [PersistentVolume](/id/docs/concepts/storage/persistent-volumes/). +* Baca [dokumen perancangan Penyimpanan _Persistent_](https://git.k8s.io/community/contributors/design-proposals/storage/persistent-storage.md). + +### Referensi + +* [PersistentVolume](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolume-v1-core) +* [PersistentVolumeSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumespec-v1-core) +* [PersistentVolumeClaim](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumeclaim-v1-core) +* [PersistentVolumeClaimSpec](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#persistentvolumeclaimspec-v1-core) + +{{% /capture %}} diff --git a/content/id/examples/pods/storage/pv-claim.yaml b/content/id/examples/pods/storage/pv-claim.yaml new file mode 100644 index 0000000000..b33f6faa4c --- /dev/null +++ b/content/id/examples/pods/storage/pv-claim.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: task-pv-claim +spec: + storageClassName: manual + accessModes: + - ReadWriteOnce + resources: + requests: + storage: 3Gi diff --git a/content/id/examples/pods/storage/pv-pod.yaml b/content/id/examples/pods/storage/pv-pod.yaml new file mode 100644 index 0000000000..0597be6876 --- /dev/null +++ b/content/id/examples/pods/storage/pv-pod.yaml @@ -0,0 +1,18 @@ +apiVersion: v1 +kind: Pod +metadata: + name: task-pv-pod +spec: + volumes: + - name: task-pv-storage + persistentVolumeClaim: + claimName: task-pv-claim + containers: + - name: task-pv-container + image: nginx + ports: + - containerPort: 80 + name: "http-server" + volumeMounts: + - mountPath: "/usr/share/nginx/html" + name: task-pv-storage diff --git a/content/id/examples/pods/storage/pv-volume.yaml b/content/id/examples/pods/storage/pv-volume.yaml new file mode 100644 index 0000000000..36fe3c5424 --- /dev/null +++ b/content/id/examples/pods/storage/pv-volume.yaml @@ -0,0 +1,14 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: task-pv-volume + labels: + type: local +spec: + storageClassName: manual + capacity: + storage: 10Gi + accessModes: + - ReadWriteOnce + hostPath: + path: "/mnt/data"