Menginstall Longhorn ke cluster dengan dua cara — Helm chart dan kubectl manifest — lalu memverifikasi seluruh Pod di namespace longhorn-system berjalan, membuka dashboard via port-forward, dan mengenal StorageClass default serta konsep node & disk di UI.

Node sudah siap di episode 3: iscsid aktif, modul kernel lengkap, dan disk kosong teridentifikasi. Di episode 4 kita masuk ke tindakan nyata — menginstall Longhorn ke cluster. Ini momen paling memuaskan sekaligus paling rapuh: jika ada satu prasyarat yang terlewat, instalasi selesai tapi seluruh volume gagal dipakai.
Mengapa episode ini penting? Karena instalasi Longhorn bukan sekadar menjalankan satu perintah — ada CSI driver yang harus jalan, CRD yang harus terdaftar, dan dashboard yang harus bisa diakses. Memahami dua cara install (Helm dan manifest) juga berguna: Helm untuk produksi yang terkelola, manifest untuk pahami setiap resource.
Cara yang direkomendasikan untuk production. Tambahkan chart repository lalu install:
helm repo add longhorn https://charts.longhorn.io
helm repo update
helm install longhorn longhorn/longhorn \
--namespace longhorn-system --create-namespaceHelm menyebar seluruh komponen Longhorn ke namespace longhorn-system. Tunggu beberapa menit hingga semua Pod Running. Bila perlu, kalian bisa memberikan values.yaml untuk override (misalnya defaultSettings.defaultDataLocality, defaultSettings.replicaSoftAntiAffinity).
Untuk memahami atau memakai rilis tertentu:
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.8.0/deploy/longhorn.yamlManifest ini menggabungkan semuanya: namespace, CRDs, RBAC, operator, CSI driver, dan UI. Tidak sefleksibel Helm, tetapi rapid dan bisa diinspeksi per-file.
kubectl -n longhorn-system get podsKalian harus melihat:
longhorn-ui-xxx — dashboard.longhorn-manager-xxx (beberapa) — operator pod per node.longhorn-driver-deployer — menyebarkan CSI driver.csi-attacher, csi-provisioner, csi-resizer, csi-snapshotter — CMSI sidecar.longhorn-csi-plugin-xxx — CSI plugin per node.instance-manager-xxx — menjalankan engine & replica per node.Semua harus Running dan Ready 1/1. Ada kondisi Ready 2/2 untuk beberapa DaemonSet (misal longhorn-csi-plugin karena punya dua container).
kubectl -n longhorn-system port-forward svc/longhorn-frontend 8080:80Buka http://localhost:8080. Dashboard Longhorn default tanpa autentikasi — untuk lab lokal aman, tapi di production wajib dilindungi (kita bahas di episode 12).
Instalasi otomatis membuat StorageClass bernama longhorn — dipakai bila PVC tidak menyebut storageClassName:
kubectl get storageclass longhorn -o yamlDefault-nya Longhorn: numberOfReplicas: "3", dataLocality: best-effort, fsType: ext4. Kalian bisa mengubahnya lewat UI atau membuat StorageClass khusus (episode 5).
Setelah dashboard terbuka, buka menu Node:
schedulable — mengontrol apakah node ini boleh menampung replica baru.Edit Node and Disks untuk menambah path disk baru atau menandai node unschedulable.Untuk lab kita:
worker-1 dan worker-2 ditandai schedulable: true./mnt/longhorn atau /dev/sdb mount point) — ini yang akan menampung replica.Tip
Kalau kalian meng-install Longhorn setelah ada existing storage antara (misal sudah pakai hostPath), jangan lupa menandai disk di UI. Longhorn tidak otomatis menambahkan semua disk node sebagai storage — ia hanya memakai disk yang secara eksplisit ditambahkan ke Longhorn Node. Tanpa ini, PVC akan Pending karena tidak ada "schedule-able" disk.
Inti yang harus dibawa pulang:
longhorn/longhorn) atau manifest — keduanya valid; Helm lebih cocok untuk upgrade terkelola.kubectl port-forward svc/longhorn-frontend 8080:80.longhorn dibuat otomatis (3 replica, best-effort, ext4).Node mengungkap disk mana yang dipakai dan status schedulable.Di episode 5 selanjutnya kita akan membuat StorageClass kustom dan dynamic provisioning volume — parameter penting seperti numberOfReplicas, dataLocality, fsType, lalu membuat PVC pertama, memverifikasi Bound, dan membaca volume di UI Longhorn. Siapkan dashboard kalian, dan sampai jumpa di episode 5!