Panduan Pengguna Condensa
Pendahuluan
Condensa adalah alat migrasi VM yang kuat yang dirancang untuk memfasilitasi migrasi mesin virtual dari berbagai platform (VMware, Nutanix, Sangfor, Windows Server) ke platform cloud Awanio. Mendukung beberapa metode migrasi termasuk migrasi panas (VM berjalan), migrasi dingin, dan migrasi berbasis file menggunakan format OVA dan VHD/VHDX.
Fitur Utama
- Migrasi Panas: Migrasi VM yang sedang berjalan dengan downtime minimal (khusus VMware)
- Dukungan Multi-Provider: VMware vSphere, file OVA, file VHD/VHDX
- Changed Block Tracking (CBT): Transfer data inkremental yang efisien untuk VMware
- UI Berbasis Web: Antarmuka yang mudah digunakan untuk mengelola migrasi
- Pelacakan Progress Real-time: Pantau status dan progress migrasi
Instalasi
Prasyarat
Sebelum menginstal Condensa, pastikan Anda memiliki:
Awanio Dashboard
Helm (v3.0 atau lebih tinggi)
bash# Instal Helm jika belum terinstal curl https://raw.githubusercontent.com/helm/helm/main/scripts/get-helm-3 | bashStorage Class yang dikonfigurasi di kluster Kubernetes Anda
Akses API Awanio
- URL endpoint API (contoh:
https://api.awanio.com/v2) - Kredensial yang valid untuk autentikasi
- URL endpoint API (contoh:
Instalasi menggunakan Helm
Tambahkan repository Helm Condensa:
bashhelm repo add condensa https://storage.awan.io/assets/charts helm repo updateBuat file values (
condensa-values.yaml):yaml# WAJIB: URL Publik untuk Condensa (harus dapat diakses oleh CDI untuk impor data) publicUrl: "http://condensa.example.com:8080" # WAJIB: Konfigurasi API Awanio awanio: apiEndpoint: "https://api.awanio.com/v2" username: "username-anda" password: "password-anda" # Konfigurasi image image: repository: registry.awan.io/images/condensa tag: latest pullPolicy: IfNotPresent # Konfigurasi service service: type: LoadBalancer # atau NodePort, ClusterIP port: 8080 # Konfigurasi penyimpanan persistence: enabled: true storageClass: "standard" # Storage class Anda size: 100Gi # Penyimpanan untuk file OVA/VHD yang diunggah # Batas resource resources: requests: memory: "512Mi" cpu: "500m" limits: memory: "2Gi" cpu: "2000m" # Konfigurasi direktori upload uploadDir: "/data/uploads" # Namespace untuk migrasi VM migrationNamespace: "vm-migrations"Instal Condensa:
bash# Buat namespace kubectl create namespace condensa # Instal dengan values kustom helm install condensa condensa/condensa \ --namespace condensa \ --values condensa-values.yamlVerifikasi instalasi:
bash# Cek status pod kubectl get pods -n condensa # Cek service kubectl get svc -n condensa # Dapatkan IP/URL eksternal kubectl get svc condensa -n condensa -o jsonpath='{.status.loadBalancer.ingress[0].ip}'Akses UI Web:
Buka browser Anda dan navigasi ke URL Condensa:
http://<ip-eksternal>:8080
Opsi Konfigurasi
| Parameter | Deskripsi | Default | Wajib |
|---|---|---|---|
publicUrl | URL publik yang dapat diakses oleh CDI | - | Ya |
awanio.apiEndpoint | Endpoint API Awanio | - | Ya |
awanio.username | Username Awanio | - | Ya |
awanio.password | Password Awanio | - | Ya |
persistence.enabled | Aktifkan penyimpanan persisten | true | Tidak |
persistence.size | Ukuran penyimpanan untuk upload | 100Gi | Tidak |
service.type | Tipe service | LoadBalancer | Tidak |
uploadDir | Direktori untuk upload file | /data/uploads | Tidak |
Persiapan VM Sumber
Persiapan VM sumber yang tepat sangat penting untuk keberhasilan migrasi. Persyaratan berbeda berdasarkan jenis provider.
VM VMware
Untuk lingkungan VMware vSphere, terutama untuk migrasi panas (migrasi VM yang sedang berjalan):
Prasyarat
- VMware vSphere 6.0 atau lebih tinggi
- Versi hardware VM 8 atau lebih tinggi
- Akses administrator ke vCenter
- Thumbprint, sebuah SSL (SHA1) fingerprint dari remote VMware server yang dibutuhkan untuk melakukan koneksi remote.
Berikut cara mendapatkan nilai thumbprint dari SERVER-NAME:
openssl s_client -connect SERVER-NAME:443 </dev/null |
openssl x509 -in /dev/stdin -fingerprint -sha1 -nooutMengaktifkan Changed Block Tracking (CBT)
Penting: CBT harus diaktifkan SEBELUM membuat snapshot untuk migrasi.
Hubungkan ke vCenter menggunakan vSphere Client
Matikan VM (jika sedang berjalan):
Klik kanan VM → Power → Shut Down Guest OSAktifkan CBT:
- Klik kanan VM → Edit Settings
- Klik tab "VM Options"
- Expand "Advanced"
- Klik "Edit Configuration"
- Tambahkan parameter berikut:
ctkEnabled = true - Klik OK untuk menyimpan
Nyalakan VM:
Klik kanan VM → Power → Power OnBuat snapshot (WAJIB setelah mengaktifkan CBT):
Klik kanan VM → Snapshots → Take Snapshot Nama: "Snapshot Pra-Migrasi" Deskripsi: "Snapshot untuk migrasi Condensa dengan CBT aktif"⚠️ Penting: Snapshot HARUS dibuat SETELAH mengaktifkan CBT. Snapshot yang dibuat sebelum CBT diaktifkan akan menyebabkan kegagalan migrasi.
Verifikasi CBT aktif:
- Periksa file .vmdk VM
- Anda harus melihat file
-ctk.vmdkuntuk setiap disk
Praktik Terbaik untuk VMware
- Pastikan VM Tools terinstal dan terbaru
- Bersihkan snapshot yang tidak perlu sebelum migrasi
- Verifikasi konektivitas jaringan antara Condensa dan vCenter
- Untuk VM besar, pertimbangkan penjadwalan migrasi selama jendela pemeliharaan
VM Nutanix (Ekspor OVA)
Untuk migrasi VM dari Nutanix AHV:
Akses Nutanix Prism:
https://<nutanix-cluster-ip>:9440Persiapan VM:
- Matikan VM dengan benar
- Hapus snapshot yang tidak perlu
- Catat spesifikasi VM (CPU, Memory, Disk)
Ekspor sebagai OVA:
a. Menggunakan Nutanix Move (Direkomendasikan):
- Instal Nutanix Move di mesin Windows/Linux
- Konfigurasi sumber sebagai Nutanix AHV
- Pilih VM untuk diekspor
- Pilih opsi "Export to OVA"
- Simpan ke direktori lokal
b. Menggunakan acli (Nutanix CLI):
bash# SSH ke Nutanix CVM ssh nutanix@<cvm-ip> # List VM acli vm.list # Ekspor VM acli vm.export <nama-vm> format=ova path=/tmp/<nama-vm>.ova # Unduh file OVA scp nutanix@<cvm-ip>:/tmp/<nama-vm>.ova .Verifikasi file OVA:
bash# Periksa konten OVA tar -tvf <nama-vm>.ova # Harus berisi: # - file .ovf (Deskriptor VM) # - file .vmdk (Disk virtual) # - file .mf (Manifest)
VM Sangfor (Ekspor OVA)
Untuk migrasi VM dari Sangfor HCI:
Akses Konsol Sangfor HCI:
https://<sangfor-hci-ip>Persiapan VM:
- Hentikan VM dari konsol Sangfor
- Hapus snapshot jika ada
- Dokumentasikan konfigurasi VM
Proses Ekspor:
a. Navigasi ke bagian Virtual Machines
b. Pilih VM target
c. Klik More Actions → Export
d. Pilih format ekspor:
- Pilih format "OVA"
- Sertakan semua disk
- Sertakan konfigurasi VM
e. Mulai ekspor:
Lokasi Ekspor: Komputer Lokal atau Network Share Format: OVA 1.0 Kompresi: Tidak ada (untuk kompatibilitas lebih baik)f. Unduh file OVA yang diekspor
Verifikasi Pasca-Ekspor:
bash# Verifikasi integritas OVA sha256sum <nama-vm>.ova # Ekstrak dan periksa deskriptor OVF tar -xf <nama-vm>.ova *.ovf cat *.ovf # Tinjau spesifikasi VM
VM Windows Server (Ekspor VHD/VHDX)
Untuk migrasi VM dari Hyper-V di Windows Server:
Dari Windows Server 2012/2016/2019/2022
Buka Hyper-V Manager:
powershell# Jalankan sebagai Administrator virtmgmt.mscPersiapan VM:
powershell# Hentikan VM Stop-VM -Name "NamaVM" # Hapus checkpoint (snapshot) Get-VMSnapshot -VMName "NamaVM" | Remove-VMSnapshotEkspor VM:
Metode 1: Menggunakan GUI Hyper-V Manager
- Klik kanan VM → Export
- Pilih lokasi ekspor
- Tunggu ekspor selesai
Metode 2: Menggunakan PowerShell
powershell# Ekspor seluruh VM Export-VM -Name "NamaVM" -Path "C:\VMExports" # Atau ekspor hanya VHD/VHDX $vm = Get-VM -Name "NamaVM" $vhd = Get-VMHardDiskDrive -VM $vm Copy-Item $vhd.Path -Destination "C:\VMExports\NamaVM.vhdx"Konversi VHDX ke VHD jika diperlukan (untuk kompatibilitas):
powershellConvert-VHD -Path "C:\VMExports\NamaVM.vhdx" ` -DestinationPath "C:\VMExports\NamaVM.vhd" ` -VHDType DynamicSiapkan file metadata (buat
vm-info.json):json{ "name": "NamaVM", "os_family": "windows", "os_version": "Windows Server 2019", "cpu": 4, "memory_mb": 8192, "disk_size_gb": 100, "architecture": "x86_64" }
Dari Azure Stack HCI
# Hubungkan ke cluster
Enter-PSSession -ComputerName <cluster-node>
# Ekspor VM
Export-VM -Name "NamaVM" -Path "\\share\exports"
# Atau gunakan Windows Admin Center untuk ekspor GUIPengaturan Provider
Provider adalah platform sumber tempat VM akan dimigrasi. Setiap jenis provider memerlukan konfigurasi spesifik.
Provider VMware
Login ke UI Web Condensa
Navigasi ke Providers:
- Klik "Providers" di menu utama
- Klik tombol "Add Provider"
Konfigurasi Provider VMware:
yamlTipe Provider: VMware vSphere Nama: vcenter-prod Deskripsi: Server vCenter Produksi Detail Koneksi: - URL vCenter: https://vcenter.example.com - Username: administrator@vsphere.local - Password: ******** - Izinkan Tidak Aman: Tidak (jangan centang untuk produksi) Pengaturan Lanjutan: - Port: 443 - Datacenter: Datacenter-01 (opsional, untuk filtering) - Transfer Bersamaan: 4Tes Koneksi:
- Klik "Test Connection"
- Verifikasi koneksi berhasil
- Tinjau resource yang ditemukan
Simpan Provider:
- Klik "Save"
- Provider harus menunjukkan status "Connected"
Provider OVA
Provider OVA menangani migrasi berbasis file menggunakan file OVA.
Navigasi ke Providers → Add Provider
Konfigurasi Provider OVA:
yamlTipe Provider: OVA Nama: ova-imports Deskripsi: Impor File OVA Pengaturan: - Direktori Upload: /data/uploads/ova - Ukuran File Maksimal: 500GB - Format yang Didukung: .ova, .ovfUpload File OVA:
Opsi 1: Upload UI Web
- Klik tombol "Upload OVA"
- Pilih file OVA dari sistem lokal
- Tambahkan metadata VM:yaml
Nama VM: imported-vm-01 Tipe OS: Ubuntu Linux 20.04 CPU: 4 Memory: 8192 MB - Klik "Upload"
Opsi 2: Upload CLI (untuk file besar)
bash# Salin ke pod Condensa kubectl cp vm-besar.ova condensa/condensa-pod:/data/uploads/ova/ # Atau gunakan curl curl -X POST http://condensa.example.com:8080/api/v1/ova/upload \ -H "Authorization: Bearer <token>" \ -F "file=@vm-besar.ova" \ -F "metadata=@vm-info.json"Verifikasi Upload:
- Periksa bagian "OVA Uploads"
- Verifikasi integritas file
- Tinjau spesifikasi VM yang diekstrak
Provider VHD/VHDX
Provider VHD menangani migrasi dari ekspor Hyper-V.
Navigasi ke Providers → Add Provider
Konfigurasi Provider VHD:
yamlTipe Provider: VHD Nama: hyperv-imports Deskripsi: Impor VHD Hyper-V Pengaturan: - Direktori Upload: /data/uploads/vhd - Format yang Didukung: .vhd, .vhdx, .avhdx - Konversi Otomatis VHDX: YaUpload File VHD:
Langkah 1: Upload VHD/VHDX
bash# UI Web untuk file kecil (<10GB) Navigasi ke "VHD Uploads" → "Upload VHD" # Untuk file besar, gunakan upload resumable curl -X POST http://condensa.example.com:8080/api/v1/vhd/uploads \ -H "Content-Type: application/json" \ -d '{ "filename": "windows-server.vhdx", "vm_name": "WinServer2019", "os_family": "windows", "os_version": "Windows Server 2019", "num_cpu": 4, "memory_mb": 16384, "disk_size_gb": 200, "architecture": "x86_64" }'Langkah 2: Gunakan Protokol TUS untuk upload file besar
bash# Instal klien tus npm install -g tus-js-client # Upload menggunakan protokol resumable tus-upload windows-server.vhdx \ --endpoint http://condensa.example.com:8080/api/v1/tus \ --metadata filename=d2luZG93cy1zZXJ2ZXIudmhkeA==,vm_id=<vm-uuid>Verifikasi Upload VHD:
- Periksa status pemrosesan
- Verifikasi kompatibilitas format disk
- Tinjau spesifikasi VM
Membuat dan Menjalankan Migrasi
Setelah provider dikonfigurasi dan VM sumber disiapkan, Anda dapat membuat dan menjalankan migrasi.
Membuat Migrasi
Navigasi ke Migrations → Create Migration
Konfigurasi Dasar:
yamlNama Migrasi: prod-ke-awanio-batch1 Deskripsi: Migrasi VM produksi batch 1 Provider Sumber: vcenter-prod (atau ova-imports, hyperv-imports) Namespace Target: vm-migrations Organisasi: Organisasi SayaPilih VM:
Untuk Provider VMware:
- Browse VM yang tersedia
- Gunakan filter:
- Datacenter
- Folder
- Status Power
- Tipe OS
- Pilih VM untuk dimigrasi
- Tinjau detail VM (CPU, Memory, Disk)
Untuk Provider OVA:
- Pilih dari file OVA yang diunggah
- Verifikasi status "Ready"
- Tinjau spesifikasi yang diekstrak
Untuk Provider VHD:
- Pilih dari file VHD yang diunggah
- Verifikasi status "Processed"
- Konfirmasi kompatibilitas OS
Pengaturan Migrasi:
yamlTipe Migrasi: - Migrasi Panas (khusus VMware, VM tetap berjalan) - Migrasi Dingin (VM dimatikan terlebih dahulu) Pemetaan Jaringan: - Jaringan Sumber: VM Network → Jaringan Target: default - Jaringan Sumber: Management → Jaringan Target: mgmt-net Pengaturan Penyimpanan: - Storage Class: fast-ssd - Mode Volume: Filesystem - Mode Akses: ReadWriteOnce Opsi Lanjutan: - Pertahankan Alamat MAC: Ya - Mulai VM setelah Migrasi: Tidak - Hapus Sumber setelah Berhasil: TidakTinjau dan Buat:
- Tinjau ringkasan migrasi
- Verifikasi kebutuhan resource
- Klik "Create Migration"
Memulai Migrasi
Lihat Detail Migrasi:
Migrations → Pilih Migrasi → View DetailsPemeriksaan Pra-penerbangan:
- Verifikasi konektivitas sumber
- Periksa namespace target ada
- Validasi ketersediaan penyimpanan
- Tinjau pemetaan jaringan
Mulai Migrasi:
Opsi 1: UI Web
- Klik tombol "Start Migration"
- Konfirmasi aksi di dialog
Opsi 2: CLI
bashcurl -X POST http://condensa.example.com:8080/api/v1/migrations/<id>/start \ -H "Authorization: Bearer <token>"Fase Migrasi:
Fase 1: Persiapan
- Buat namespace target
- Siapkan DataVolume
- Inisialisasi job transfer
Fase 2: Transfer Data
- Untuk VMware: Transfer VDDK dengan CBT
- Untuk OVA/VHD: Impor HTTP via CDI
- Progress ditampilkan real-time
Fase 3: Konversi
- Konversi disk ke QCOW2
- Terapkan optimasi OS
- Konfigurasi driver
Fase 4: Pembuatan VM
- Buat VirtualMachine CR
- Konfigurasi jaringan
- Terapkan batas resource
Fase 5: Verifikasi
- Verifikasi pembuatan VM
- Periksa attachment disk
- Validasi konfigurasi
Memantau Progress
Progress Real-time:
- Lihat persentase progress keseluruhan
- Pantau status VM individual
- Periksa kecepatan transfer data
- Lihat log real-time
Indikator Progress:
Progress Keseluruhan: 45% Status VM: - vm-web-01: ✓ Selesai (100%) - vm-app-01: ⟳ Mentransfer (67%) - vm-db-01: ⏸ AntrianMelihat Log:
bash# Lihat log migrasi kubectl logs -n condensa condensa-pod -f # Lihat transfer VM spesifik kubectl get datavolume -n vm-migrations vm-web-01-disk-0 -o yamlNotifikasi:
- Alert email saat selesai
- Notifikasi webhook
- Integrasi Slack (jika dikonfigurasi)
Pemecahan Masalah
Masalah Umum dan Solusi
Migrasi VMware Gagal
Masalah: Error "CBT not enabled"
Solusi:
1. Aktifkan CBT di VM sumber
2. Buat snapshot baru SETELAH mengaktifkan CBT
3. Coba migrasi lagiMasalah: "Cannot connect to vCenter"
Solusi:
1. Verifikasi konektivitas jaringan
2. Periksa aturan firewall (port 443)
3. Verifikasi kredensial
4. Coba dengan "Allow Insecure" jika menggunakan sertifikat self-signedMasalah: "Snapshot not found"
Solusi:
1. Buat snapshot di VM sumber
2. Tunggu snapshot terkonsolidasi
3. Refresh koneksi providerMasalah Upload OVA
Masalah: "Invalid OVF descriptor"
Solusi:
1. Verifikasi integritas file OVA:
tar -tvf vm.ova
2. Ekstrak dan validasi OVF:
tar -xf vm.ova *.ovf
xmllint --noout *.ovf
3. Ekspor ulang dari sumber jika rusakMasalah: "Unsupported disk format"
Solusi:
1. Konversi disk ke format yang didukung:
qemu-img convert -f vmdk -O qcow2 disk.vmdk disk.qcow2
2. Paket ulang OVA dengan disk yang dikonversiMasalah Upload VHD
Masalah: "VHD file corrupted"
Solusi:
1. Verifikasi checksum file
2. Ekspor ulang dari Hyper-V
3. Coba konversi VHDX ke VHD:
Convert-VHD -Path source.vhdx -DestinationPath dest.vhdMasalah: "Metadata missing"
Solusi:
1. Buat vm-info.json dengan field yang diperlukan
2. Upload metadata bersama VHD
3. Atau update via API setelah uploadDataVolume Macet
Masalah: DataVolume dalam status "Pending"
# Periksa status DataVolume
kubectl describe datavolume -n vm-migrations <nama-dv>
# Solusi umum:
1. Periksa status bound PVC
2. Verifikasi storage class ada
3. Periksa kapasitas penyimpanan tersedia
4. Tinjau log pod CDI:
kubectl logs -n cdi deployment/cdi-deploymentMasalah Performa Migrasi
Kecepatan Transfer Lambat
Solusi:
1. Aktifkan transfer paralel (VMware)
2. Tingkatkan batas resource CDI
3. Gunakan storage class lebih cepat
4. Periksa bandwidth jaringan
5. Jadwalkan selama jam non-sibukPerintah Debug
# Periksa log Condensa
kubectl logs -n condensa deployment/condensa -f
# Periksa status migrasi
curl http://condensa.example.com:8080/api/v1/migrations/<id>/status
# Periksa progress DataVolume
kubectl get datavolume -n vm-migrations -w
# Periksa pod importer CDI
kubectl get pods -n vm-migrations | grep importer
# Lihat log importer
kubectl logs -n vm-migrations <nama-pod-importer>
# Periksa event
kubectl get events -n vm-migrations --sort-by='.lastTimestamp'Praktik Terbaik
Pra-Migrasi
Perencanaan Kapasitas:
- Verifikasi penyimpanan cukup di kluster target
- Rencanakan 2x ruang disk selama konversi
- Pertimbangkan kebutuhan bandwidth jaringan
Persiapan VM:
- Update tools/driver VM
- Bersihkan file yang tidak perlu
- Konsolidasi snapshot
- Dokumentasikan dependensi VM
Pengujian:
- Tes dengan VM non-kritis terlebih dahulu
- Verifikasi proses migrasi end-to-end
- Dokumentasikan prosedur pemulihan
Selama Migrasi
Pemrosesan Batch:
- Migrasi VM dalam grup logis
- Mulai dengan beban kerja kurang kritis
- Pantau utilisasi resource
Pertimbangan Jaringan:
- Gunakan jaringan migrasi khusus jika memungkinkan
- Konfigurasi batas bandwidth yang sesuai
- Rencanakan jendela pemeliharaan jaringan
Pemantauan:
- Perhatikan kecepatan transfer
- Pantau beban sistem sumber
- Periksa resource kluster target
Pasca-Migrasi
Verifikasi:
- Verifikasi fungsionalitas VM
- Tes konektivitas aplikasi
- Validasi metrik performa
Pembersihan:
- Hapus DataVolume migrasi yang berhasil
- Bersihkan snapshot sumber
- Arsipkan log migrasi
Dokumentasi:
- Dokumentasikan masalah migrasi
- Update runbook
- Catat metrik performa
Pertimbangan Keamanan
Kredensial:
- Gunakan service account untuk provider
- Rotasi kredensial secara berkala
- Implementasikan kebijakan RBAC
Keamanan Jaringan:
- Gunakan TLS untuk semua koneksi
- Implementasikan network policy
- Batasi akses ke Condensa
Perlindungan Data:
- Enkripsi data saat transit
- Amankan direktori upload
- Implementasikan kebijakan retensi
Lampiran
Konfigurasi yang Didukung
| Platform Sumber | Tipe Migrasi | Persyaratan |
|---|---|---|
| VMware vSphere 6.0+ | Panas/Dingin | CBT, Snapshot |
| Nutanix AHV | Ekspor OVA | OVA 1.0/2.0 |
| Sangfor HCI | Ekspor OVA | OVA 1.0 |
| Hyper-V 2012+ | Ekspor VHD | VHD/VHDX |
| Azure Stack HCI | Ekspor VHD | VHD/VHDX |
Referensi API
Endpoint API utama untuk otomasi:
# Manajemen Provider
GET /api/v1/providers
POST /api/v1/providers
DELETE /api/v1/providers/{id}
# Manajemen Migrasi
GET /api/v1/migrations
POST /api/v1/migrations
POST /api/v1/migrations/{id}/start
POST /api/v1/migrations/{id}/cancel
GET /api/v1/migrations/{id}/status
# Manajemen Upload
POST /api/v1/ova/upload
POST /api/v1/vhd/uploads
GET /api/v1/uploads/statusVariabel Lingkungan
Konfigurasi Condensa menggunakan variabel lingkungan:
CONDENSA_PUBLIC_URL=http://condensa.example.com:8080
CONDENSA_UPLOAD_DIR=/data/uploads
AWANIO_API=https://api.awanio.com/v2
DB_PATH=/data/condensa.db
PORT=8080Dukungan dan Sumber Daya
- Dokumentasi: https://gitlab.com/awan.io/condensa
- Pelacak Masalah: https://gitlab.com/awan.io/condensa/issues
- Dukungan Komunitas: support@awan.io
- Dukungan Enterprise: Tersedia dengan langganan Awanio
Terakhir Diperbarui: 2025Versi: 0.1.0