Mengamankan data istirahat dengan enkripsi volume Longhorn berbasis LUKS2: mengaktifkan parameter encrypted di StorageClass, menyimpan passphrase di Kubernetes Secret, memahami snapshot/backup terenkripsi, dan menimbang enkripsi transit pada jaringan iSCSI untuk arsitektur multi-AZ.

Topology dan RBAC sudah kita bereskan di episode 11-12. Episode 13 menyentuh pertahanan terakhir data di sisi fisik: enkripsi at-rest. Jika disk dicuri, laptop hilang, atau server bekas di-eksekusi orang asing, data harus tetap tidak terbaca.
Mengapa penting? Enkripsi at-rest bukan sekadar kepatuhan (PCI-DSS, GDPR) — ini pengaman terakhir yang bekerja bahkan ketika kontrol akses sudah didobrak. Longhorn mendukungnya secara native berbasis LUKS2, jadi menyiapkannya lebih murah daripada yang kalian kira.
Cukup tambahkan parameter pada StorageClass:
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: longhorn-encrypted
provisioner: driver.longhorn.io
allowVolumeExpansion: true
parameters:
numberOfReplicas: "3"
dataLocality: "best-effort"
fsType: "ext4"
encrypted: "true"
csi.storage.k8s.io/node-stage-secret-name: longhorn-crypto
csi.storage.k8s.io/node-stage-secret-namespace: longhorn-systemLonghorn butuh passphrase untuk membuka LUKS. Buat Secret khusus (jangan pakai default):
kubectl -n longhorn-system create secret generic longhorn-crypto \
--from-literal=CRYPTO_KEY_VALUE="$(openssl rand -base64 32)"Passphrase ini digunakan saat node-stage (attach) — Longhorn membuka LUKS, kemudian membuat filesystem di dalamnya. PVC yang memakai StorageClass longhorn-encrypted akan menghasilkan volume yang terenkripsi penuh at-rest.
Artinya seluruh blok data — termasuk filesystem metadata dan semua replica — terenkripsi di level volume, bukan hanya di level filesystem. Snapshot dan replica ikut terenkripsi tanpa pekerjaan ekstra.
| Aspek | Keterangan |
|---|---|
| Keamanan | Data tak terbaca tanpa passphrase |
| Kompleksitas | Tambahan Secret + parameter StorageClass |
| Performa | Overhead enkripsi ringan pada CPU modern (AES-NI) |
| Backup/restore | Backup volume LUKS menyimpan container terenkripsi — restore di cluster baru butuh secret yang sama |
Warning
Jika CRYPTO_KEY_VALUE hilang, volume terenkripsi tidak bisa dibuka — data hilang permanen. Simpan passphrase di vault/keys manager, backup terenkripsi, dan jangan sekali pun commit ke git.
Snapshot volume LUKS: tetap terenkripsi — aman.
Backup ke S3/NFS: Longhorn mengirim blok data LUKS yang terenkripsi. Kredensial Decrypt tidak ikut dikirim; restore di cluster baru memerlukan:
longhorn-crypto dengan passphrase yang sama ada di cluster tujuan.Ubah passphrase membutuhkan proses re-LUKS (re-encrypt) yang tidak sejalan dengan sederhana — karena itu Longhorn menyarankan rotasi passphrase di level Secret lalu buat volume baru + restore dari backup bila diperlukan. Simpan vault offline untuk cadangan.
Jalur data Pod → Engine → Replica (lewat iSCSI/NVMe-oF) tidak dienkripsi oleh default. Dalam satu cluster private, risiko rendah, tapi untuk multi-AZ antar-DC:
encrypted: "true" untuk semua volume kritis.Inti yang harus dibawa pulang:
encrypted: "true" di StorageClass → volume LUKS2 terenkripsi at-rest.longhorn-crypto — jangan pakai default, jangan kehilangan.Di episode 14 selanjutnya kita akan membahas snapshot, restore & volume clone — membuat VolumeSnapshot dengan VolumeSnapshotClass, restore ke PVC baru secara instan, melakukan clone untuk staging, dan fitur linked-clone di V2 engine. Sampai jumpa di episode 14!