kubev2v/forklift

Toolkit for migrating VMs from VMware, OVA, EC2, HyperV, oVirt and OpenStack to KubeVirt

View on GitHub ↗Jump to charts ↓Open shareable report

Summary Information

Updated 3 minutes ago
Added to GitGenius on May 7th, 2023
Created on September 8th, 2022
Open Issues & Pull Requests: 246 (+0)
Number of forks: 106
Total Stargazers: 189 (+0)
Total Subscribers: 6 (+0)

Repository Insights (GitGenius)

Median issue/PR response: 29.2 hours
Mean response time: 100.9 days
90th percentile: 415.9 days
Tracked items: 59

How this project is maintained

Around half of the issues opened in the past year never receive a reply. 79% of open issues come from outside the core team, so the backlog reflects real-world use rather than internal planning. Only 3% of issues opened in the past year have been closed. Three people close 56% of everything that gets resolved.

Charts & Analytics

Fetching additional details & charts...

Issue Activity (beta)

Open issues: 81
New in 7 days: 0
Closed in 7 days: 0
Avg open age: 729 days
Stale 30+ days: 80
Stale 90+ days: 78

Recent activity

Opened in 7 days: 0
Closed in 7 days: 0
Comments in 7 days: 0
Events in 7 days: 0

Top labels

  • OpenStack (21)
  • bug (14)
  • RHV (11)
  • OpenShift (9)
  • vSphere (6)
  • enhancement (4)
  • OVA (3)
  • console-plugin (1)

Most active issues this week

No issue events were indexed in the last 7 days.

Detailed Description

Forklift is a toolkit designed to migrate virtual machines at scale from multiple legacy virtualization platforms to Kubernetes KubeVirt. The project enables organizations to move workloads from VMware, OVA, EC2, Hyper-V, oVirt, and OpenStack environments into Kubernetes clusters. Written primarily in Go, Forklift addresses the challenge of cloud-native transformation by automating the complex process of converting traditional virtual machines into containerized workloads running on KubeVirt.

The migration workflow in Forklift follows a structured three-step process. Users first provide source and destination credentials to establish connections with both the legacy infrastructure and target Kubernetes environment. Next, they map the source and destination infrastructure components and create a choreographed migration plan. Finally, the system executes the actual migration effort. This orchestrated approach reduces manual intervention and helps ensure consistency across large-scale migration operations.

Forklift implements several advanced migration capabilities to minimize downtime and ensure compatibility. Warm migration using Change Block Tracking and Incremental Backup is supported for VMware and oVirt migrations, allowing virtual machines to continue running during the initial migration phases. For VMware migrations specifically, Forklift leverages virt-v2v for guest conversions, which automatically installs virtio drivers and modifies the guest operating system to run on QEMU-KVM. The toolkit also supports migrating virtual machines to remote clusters, enabling users to install Forklift on one cluster while orchestrating migrations on other clusters. Cross-cluster VM migration is facilitated through the KubeVirt Export API. Additionally, Forklift includes validation mechanisms that check virtual machines before migration execution, alerting users to potential issues that require resolution before proceeding.

The project maintains active development with structured contribution practices. The project's contributor base shows overlap with major open-source projects including Microsoft's VSCode and TypeScript repositories as well as the Rust language project.

Deployment of Forklift involves installing the operator index to a Kubernetes cluster, with support for both single-architecture development deployments and multi-architecture production deployments covering AMD64 and ARM64 platforms. The build system is highly configurable, allowing customization of registry locations, image tags, target platforms, and component versions through environment variables. The operator can be deployed to a configurable namespace, defaulting to konveyor-forklift, and supports multiple OLM channels for different release tracks. Development contributions follow a structured commit message format requiring references to MTV issue numbers or explicit exclusion markers, enforced through GitHub Actions validation that automatically skips bot users and chore commits.