Cara Deploy Longhorn di Kubernetes Dengan Kubectl

Longhorn adalah solusi penyimpanan (storage) terdistribusi yang sangat populer di Kubernetes. Dengan Longhorn, kamu bisa mengelola persistent storage yang handal dan scalable secara mudah. Artikel ini akan membahas cara deploy Longhorn di Kubernetes menggunakan kubectl, mengikuti dokumentasi resmi Longhorn v1.9.0. Yuk, simak step-by-step lengkapnya! π
βοΈ Persiapan Sebelum Instalasi
Sebelum memasang Longhorn, pastikan hal-hal berikut sudah siap:
- β Node Kubernetes harus memenuhi persyaratan.
- πΎ Paket iSCSI initiator wajib terpasang di semua node, karena Longhorn menggunakan iSCSI untuk komunikasi block storage.
Untuk CentOS/RHEL/Almalinux jalankan:sudo yum install -y iscsi-initiator-utils
Untuk Ubuntu/Debian:sudo apt-get install -y open-iscsi
- π οΈ Opsional, kamu bisa pakai Longhorn CLI untuk cek environment Longhorn.
- βοΈ Jika ingin custom konfigurasi Longhorn, edit dulu file YAML sebelum apply.
π Pasang Ingress Controller (NGINX) di Kubernetes
Sebelum buat Ingress Longhorn UI, pastikan Ingress Controller sudah terpasang di cluster kamu. NGINX Ingress Controller adalah pilihan populer dan mudah dipasang.
Cara install NGINX Ingress Controller:
kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.10.2/deploy/static/provider/cloud/deploy.yaml
Pantau pod ingress-nginx dengan perintah:
kubectl get pods -n ingress-nginx --watch
β³ Tunggu sampai semua pod berstatus Running dan siap digunakan.
π Pasang Cert-Manager untuk SSL Letβs Encrypt
Cert-Manager berguna untuk mengelola sertifikat TLS otomatis dari Letβs Encrypt.
Cara install Cert-Manager:
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.15.0/cert-manager.yaml
Pantau pod cert-manager:
kubectl get pods -n cert-manager --watch
β³ Pastikan semua pod dalam status Running sebelum melanjutkan konfigurasi ClusterIssuer.
π Langkah Instalasi Longhorn
Langsung jalankan perintah ini untuk install Longhorn di cluster Kubernetes kamu:
kubectl apply -f https://raw.githubusercontent.com/longhorn/longhorn/v1.9.0/deploy/longhorn.yaml
β¨ Perintah ini akan membuat namespace longhorn-system
dan men-deploy seluruh komponen Longhorn di sana. Mudah, kan?
π Memantau Proses Instalasi
Untuk memantau apakah pod Longhorn sudah berjalan dengan baik, gunakan perintah:
kubectl get pods --namespace longhorn-system --watch
β³ Tunggu hingga semua pod berstatus Running dan READY 1/1 atau 2/2 untuk beberapa pod.
β Verifikasi Setelah Instalasi
Setelah beberapa menit, cek status pod dengan:
kubectl -n longhorn-system get pod
Kamu harus melihat output seperti ini:
NAME READY STATUS RESTARTS AGE
longhorn-ui-b7c844b49-w25g5 1/1 Running 0 2m41s
longhorn-manager-pzgsp 1/1 Running 0 2m41s
longhorn-csi-plugin-mbwqz 2/2 Running 0 100s
...
π Akses UI Longhorn via Ingress Controller
Untuk akses UI Longhorn melalui subdomain seperti longhorn.masdika.my.id
, ikuti langkah berikut:
1. Buat folder konfigurasi dan file-file YAML
mkdir -p longhorn
cd longhorn
2. Buat auth-secret.yaml (Basic Auth Secret) π
Basic Auth menggunakan string username:password
yang sudah di-encode ke format base64.
Misal username: test
Password: test
Cara membuat base64-nya di Linux/macOS/WSL:
echo -n 'test:test' | base64
Output:
dGVzdDp0ZXN0
Masukkan hasil ini ke auth
di file:
apiVersion: v1
kind: Secret
metadata:
name: basic-auth
namespace: longhorn-system
type: Opaque
data:
auth: dGVzdDp0ZXN0
3. Buat cluster-issuer.yaml (Cert-Manager Letβs Encrypt) π
apiVersion: cert-manager.io/v1
kind: ClusterIssuer
metadata:
name: letsencrypt-prod
spec:
acme:
email: andika@herza.id
server: https://acme-v02.api.letsencrypt.org/directory
privateKeySecretRef:
name: letsencrypt-prod
solvers:
- http01:
ingress:
class: nginx
4. Buat ingress.yaml untuk Longhorn UI πΈοΈ
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: longhorn-ui-ingress
namespace: longhorn-system
annotations:
cert-manager.io/cluster-issuer: "letsencrypt-prod"
nginx.ingress.kubernetes.io/ssl-redirect: "true"
nginx.ingress.kubernetes.io/auth-type: "basic"
nginx.ingress.kubernetes.io/auth-secret: "basic-auth"
nginx.ingress.kubernetes.io/auth-realm: "Restricted Area"
spec:
ingressClassName: nginx
tls:
- hosts:
- longhorn.masdika.my.id
secretName: longhorn-tls
rules:
- host: longhorn.masdika.my.id
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: longhorn-frontend
port:
number: 80
5. Terapkan file YAML π»
kubectl apply -f auth-secret.yaml
kubectl apply -f cluster-issuer.yaml
kubectl apply -f ingress.yaml

π― Kesimpulan
Dengan mengikuti panduan ini, Longhorn akan terpasang dengan benar di Kubernetes, dan UI-nya dapat diakses aman lewat subdomain dengan TLS dan Basic Auth. Jangan lupa instal paket iSCSI di semua node dan pantau pod-nya agar semuanya berjalan lancar! πβ¨