Skip to content

Migrasi VM dari Awanio CEP ke Cockpit

Menjalankan Migrasi melalui Vapor Web UI (tanpa docker-compose)

Anda dapat melakukan konfigurasi dan menjalankan utilitas migrasi berbasis container secara langsung melalui Vapor Web UI tanpa menggunakan perintah Docker Compose melalui command line.

1. Konfigurasi Container

Pada Vapor Web UI, buka tab Docker, pilih Containers, kemudian klik + Create Container untuk membuka panel pembuatan container. Konfigurasikan opsi berikut:

  • Name: kvirt2virt
  • Image: r.awan.app/library/tools/kvirt2virt:v1.0.4
  • Network: Ubah pilihan network menjadi host (hal ini memastikan tool libvirt yang berjalan di dalam container dapat mengakses domain jaringan lokal dan socket hypervisor).
  • Advanced Options:
    • Aktifkan Privileged Mode (diperlukan untuk mendapatkan akses ke backend virtualisasi dan storage pada sistem).
    • Aktifkan Allocate Pseudo-TTY (-t) (diperlukan untuk menjalankan prompt interaktif).
    • Aktifkan Keep STDIN Open (-i) (diperlukan untuk menjalankan prompt interaktif).
  • Volumes (Bind Mounts): Tambahkan path host yang akan di-mount ke dalam container (gunakan tipe bind dan propagation rslave jika diperlukan). Pilih source path sesuai dengan jenis instalasi Docker yang digunakan.
Opsi A: Standard Docker (misalnya Debian-based, RHEL, atau Docker CE resmi)

Jika node menggunakan Docker daemon standar yang diinstal melalui package native (misalnya apt-get install docker-ce pada Debian), gunakan path host berikut:

  1. Libvirt Socket: Source /var/run/libvirt ➔ Target /var/run/libvirt (Type bind, Propagation rslave)
  2. KubeVirt Pod Disk Storage: Source /var/lib/kubelet ➔ Target /var/lib/kubelet (Type bind, Propagation rslave)
  3. Local VM Images Pool: Source /var/lib/libvirt/images ➔ Target /var/lib/libvirt/images (Type bind, Propagation rslave)
  4. Host Kubeconfig Configuration: Source /root/.kube ➔ Target /root/.kube (Type bind)
Opsi B: Docker yang diinstal melalui Ubuntu Snap

Jika node menggunakan Docker yang diinstal melalui Ubuntu Snap, Docker daemon akan berjalan pada mount namespace yang terisolasi sehingga tidak dapat mengakses /var/lib/kubelet maupun /var/run/libvirt secara langsung. Ikuti langkah-langkah berikut:

  1. Pada host, jalankan perintah berikut untuk membuat shared loop-back mount:

    bash
    # Expose kubelet storage:
    sudo mkdir -p /var/snap/docker/common/kubelet
    sudo mount --bind /var/lib/kubelet /var/snap/docker/common/kubelet
    
    # Expose libvirt daemon socket:
    sudo mkdir -p /var/snap/docker/common/libvirt
    sudo mount --bind /var/run/libvirt /var/snap/docker/common/libvirt

    (Agar mount tetap tersedia setelah reboot, tambahkan konfigurasi tersebut ke /etc/fstab.)

  2. Pada Vapor Web UI, isi konfigurasi volume menggunakan path Snap yang telah dibuat:

    1. Libvirt Socket: Source /var/snap/docker/common/libvirt ➔ Target /var/run/libvirt (Type bind, Propagation rslave)
    2. KubeVirt Pod Disk Storage: Source /var/snap/docker/common/kubelet ➔ Target /var/lib/kubelet (Type bind, Propagation rslave)
    3. Local VM Images Pool: Source /var/snap/docker/common/var/lib/libvirt/images ➔ Target /var/lib/libvirt/images (Type bind, Propagation rslave)
    4. Host Kubeconfig Configuration: Source /home/awanio/.kube ➔ Target /root/.kube (Type bind)

Klik Create Container untuk membuat dan menjalankan container daemon di background.

2. Menjalankan Migrasi melalui Web Terminal

Setelah status container berubah menjadi running pada daftar container:

  1. Klik menu Actions pada container, kemudian pilih Terminal untuk membuka Container Terminal Modal.

  2. Pada terminal web, jalankan perintah berikut:

    bash
    migrate -i

    Perintah tersebut akan menjalankan wizard interaktif, sehingga Anda dapat menentukan target VMI, nama VM tujuan, storage pool, network, dan melakukan copy-paste konfigurasi kubeconfig jika diperlukan.

  3. Sebagai alternatif, Anda juga dapat menjalankan perintah non-interaktif berikut:

    bash
    migrate --vmi-name cirros-vm --namespace default --storage-pool default --target-name my-vm-copy

Mode Output

Mode Default

Secara default, script akan berjalan dalam mode quiet dan hanya menampilkan informasi VM, progress bar secara real-time selama proses copy/convert, serta status akhir ketika migrasi selesai.

text
Migrating VM 'default/cirros-vm' to host VM 'my-cirros-copy'...
  Progress: [========================================] 100.0% (16MB / 16MB)
  Progress: [========================================] 100.0%
SUCCESS: VM 'my-cirros-copy' restored and is now running on host. (1.17s)

Mode Verbose

Jalankan script menggunakan opsi --verbose untuk menampilkan seluruh log diagnostik, termasuk proses transformasi XML, patching model CPU, dan patch biner yang dilakukan selama proses migrasi.