Skip to content

Migrate from GCP Compute Engine to Quake AI compute

Migration · Updated Jun 2026

Coming from another cloud?

▸Google Cloud·VM instances, Persistent Disk, Machine Images (full VM state capture)

VM instanceshigh

  • Uses REST API 'instances.insert' instead of Nova 'servers.create' with different auth via service accounts vs Keystone.
  • Supports bare metal instances (no hypervisor), not in standard OpenStack Nova.
  • Network interfaces tied to VPC subnets; differs from Neutron ports/floating IPs.
Google Cloud docs ↗

OS imageshigh

  • Public images shareable across projects (e.g. debian-cloud); OpenStack typically tenant-private.
  • Image families point to latest version; no OpenStack equivalent.
  • Custom images stored in Cloud Storage with licensing fees for premium OS.
Google Cloud docs ↗

Persistent Diskhigh

  • Uses Google Compute Engine REST API instead of OpenStack Cinder API.
  • Offers multiple performance tiers (pd-standard HDD, pd-balanced SSD, pd-ssd, pd-extreme) with performance scaling linearly with provisioned size, unlike Cinder's backend-dependent performance.
  • Supports regional disks replicated synchronously across 2 zones for higher availability (better than 99.9999% durability), while Cinder volumes are typically zonal unless using replication features.
  • Online resize to increase size without detaching; no manual striping/RAID needed as GCP handles distribution automatically.
Google Cloud docs ↗

Migrate from GCP compute engine to Quake AI compute

You use this guide to move compute workloads from GCP Compute Engine to Quake AI (OpenStack Nova). GCP can export custom images to QCOW2, OpenStack Glance's preferred format, with Cloud Build handling the conversion internally so you skip the manual qemu-img step. For most workloads, rebuild and rsync stays faster, but you can use image export for custom GCE images with extensive baked-in configuration.

Service mapping#

Google Cloud to Quake AI

Google Cloud serviceQuake AI equivalentKey difference
Disk ClonesClonesDirect disk-to-disk cloning (zonal-to-zonal or zonal-to-regional) without intermediate snapshot, synchronous and instantly usable (regional... see details
Compute EngineComputeNo notable divergence
Machine typesFlavorsOrganized by families/series (e.g. N2 general-purpose); OpenStack flavors flat list. Custom types +5% premium for N/E series; no such... see details
Machine Images (full VM state capture)ImagesPublic images shareable across projects (e.g. debian-cloud); OpenStack typically tenant-private. Image families point to latest version; no... see details
VM instancesInstancesUses REST API 'instances.insert' instead of Nova 'servers.create' with different auth via service accounts vs Keystone. Supports bare metal... see details
SSH keysKey PairsManaged in project/instance metadata or OS Login (IAM); no central 'keypairs' resource like Nova. Auto-generates ephemeral keys for... see details
Sole-Tenant Nodes / Instance GroupsServer GroupsMIGs offer autoscaling, autohealing, rolling updates via templates; OpenStack only scheduling policies (affinity etc.). Zonal/regional with... see details
Standard/Archive SnapshotsSnapshotsCrash-consistent point-in-time copies stored incrementally in Cloud Storage (geo-redundant by default), unlike Cinder snapshots which... see details

Prerequisites#

  • A Quake AI account with application credentials
  • The OpenStack CLI installed and configured
  • SSH access to your GCE instances
  • An SSH key pair imported to Quake AI (openstack keypair create --public-key)
  • For image export: gcloud CLI installed and Cloud Build API enabled

Image portability#

GCP supports exporting custom images to QCOW2. The export pipeline, powered by Cloud Build, handles the format conversion internally, so you do not run a separate qemu-img step. Among major providers, GCP is the one whose export command produces QCOW2 output directly.

bash
# Export directly to QCOW2
gcloud compute images export \
  --image MY_CUSTOM_IMAGE \
  --destination-uri gs://MY_BUCKET/MY_IMAGE_QCOW2 \
  --export-format qcow2

# Download from Cloud Storage
gsutil cp gs://MY_BUCKET/MY_IMAGE_QCOW2 .

# Upload to Glance
openstack image create MY_IMAGE_NAME \
  --disk-format qcow2 --container-format bare \
  --file ./MY_IMAGE_QCOW2

When to use image export: Use QCOW2 export for custom images with extensive baked-in software or configuration. For standard OS images, use Quake AI public images and rebuild.

Flavor mapping#

GCP machine type families map to Quake AI flavor families by their RAM-to-vCPU ratio. Standard (4:1) maps to m2a, highmem (8:1) maps to r2a, and highcpu (1:1) maps closest to c2a (though Quake AI c2a provides 2 GiB RAM per vCPU, more than GCP highcpu).

GCP Machine TypevCPUsRAM (GiB)Quake AI FlavorvCPUsRAM (GiB)Notes
e2-micro2 (shared)1s1a.micro11Shared → shared; fewer vCPUs on Quake AI
e2-small2 (shared)2s1a.small12Shared → shared
e2-medium2 (shared)4s1a.medium24Close match
e2-standard-4416m2a.xlarge416Exact ratio match
e2-standard-8832m2a.2xlarge832Exact ratio match
n2-standard-228m2a.large28Exact ratio match
n2-standard-8832m2a.2xlarge832Exact ratio match
n2-standard-3232128m2a.8xlarge32128Exact ratio match
n2-highcpu-444c2a.xlarge48Quake AI provides 2x the RAM
n2-highcpu-888c2a.2xlarge816Quake AI provides 2x the RAM
n2-highmem-2216r2a.large216Exact ratio match
n2-highmem-8864r2a.2xlarge864Exact ratio match
c2-standard-8832m2a.2xlarge832Exact ratio match

GCP highcpu (1:1 ratio) is tighter than Quake AI c2a (2:1 ratio). If your workload is CPU-bound with minimal memory, c2a still fits; you get more RAM per vCPU on Quake AI, which adds headroom.

GCP also offers newer machine series (N4, C3, C3D, C4) with similar RAM-to-vCPU ratios. Apply the same ratio-based mapping: standard series (4:1) maps to m2a, highcpu series (1:1) maps to c2a, and highmem series (8:1) maps to r2a.

Migration approach#

If your GCE instances run containers (or you use GKE), migrate container images and redeploy.

  1. Push container images from Artifact Registry to a portable registry. Google Container Registry (gcr.io) was shut down in March 2025; Artifact Registry (pkg.dev) is the current GCP container registry:
bash
# Pull from Artifact Registry (current GCP registry)
docker pull REGION-docker.pkg.dev/MY_PROJECT/MY_REPOSITORY/MY_APP:latest
docker tag REGION-docker.pkg.dev/MY_PROJECT/MY_REPOSITORY/MY_APP:latest \
  MY_REGISTRY/MY_APP:latest
docker push MY_REGISTRY/MY_APP:latest
  1. Provision a Nova instance on Quake AI:
bash
openstack server create \
  --image "Ubuntu-22.04" \
  --flavor m2a.xlarge \
  --network MY_NETWORK \
  --key-name MY_KEY \
  --security-group MY_SECURITY_GROUP \
  MY_INSTANCE_NAME
  1. Install Docker and deploy:
bash
ssh ubuntu@FLOATING_IP
sudo apt update && sudo apt install -y docker.io
sudo docker pull MY_REGISTRY/MY_APP:latest
sudo docker run -d -p 80:8080 MY_REGISTRY/MY_APP:latest

Option 2: Rebuild and rsync (non-containerized)#

  1. Provision a Nova instance with the same base OS:
bash
openstack server create \
  --image "Ubuntu-22.04" \
  --flavor m2a.xlarge \
  --network MY_NETWORK \
  --key-name MY_KEY \
  --security-group MY_SECURITY_GROUP \
  MY_INSTANCE_NAME
  1. Assign a floating IP:
bash
openstack floating ip create PublicStatic
openstack server add floating ip MY_INSTANCE_NAME FLOATING_IP
  1. Install your application stack on the Quake AI instance. Reuse cloud-init configs, Ansible playbooks, or startup scripts.

  2. Transfer application data from the GCE instance:

bash
rsync -avz --progress -e "ssh -i ~/.ssh/MY_KEY" \
  MY_USER@GCE_EXTERNAL_IP:/path/to/app/data \
  ubuntu@FLOATING_IP:/path/to/app/data
  1. Migrate databases:
bash
# PostgreSQL
pg_dump -h GCE_EXTERNAL_IP -U MY_USER MY_DATABASE | \
  psql -h FLOATING_IP -U MY_USER MY_DATABASE

# MySQL
mysqldump -h GCE_EXTERNAL_IP -u MY_USER -p MY_DATABASE | \
  mysql -h FLOATING_IP -u MY_USER -p MY_DATABASE

Key pair and security setup#

Import your SSH key#

If you already use an SSH key pair with GCE, import the public key to Quake AI:

bash
openstack keypair create --public-key ~/.ssh/id_ed25519.pub MY_KEY

Or generate a new key pair:

bash
openstack keypair create MY_KEY > MY_KEY.pem
chmod 600 MY_KEY.pem

Translate GCP firewall rules to security groups#

GCP firewall rules support both allow and deny with priority ordering. Neutron security groups are allow-only and additive. If your security posture relies on deny rules, rethink the logic for an additive model where you allow only what is needed.

bash
openstack security group create web-tier
openstack security group rule create web-tier \
  --protocol tcp --dst-port 22 --remote-ip 0.0.0.0/0
openstack security group rule create web-tier \
  --protocol tcp --dst-port 80 --remote-ip 0.0.0.0/0
openstack security group rule create web-tier \
  --protocol tcp --dst-port 443 --remote-ip 0.0.0.0/0

Validation checklist#

After migrating each workload, verify:

  • Application responds correctly on the Quake AI instance
  • All expected ports are accessible through the security group
  • Data integrity: compare file checksums or row counts between source and destination
  • Database connectivity from the application to any migrated databases
  • DNS records updated to point to the new Quake AI floating IP
  • Monitoring in place (self-managed Prometheus + Grafana to replace GCP Monitoring)
  • cloud-init or startup scripts run cleanly on the new instance
  • SSL/TLS certificates installed and renewed

Provider-specific gotchas#

TopicDetail
Egress costsGCP bills egress per GB. Premium Tier runs steeper than AWS; Standard Tier is comparable for large transfers. See GCP network pricing.
Committed Use DiscountsCheck for active CUDs before decommissioning. CUDs cannot be cancelled; you pay for the full commitment term (1 or 3 years) regardless of usage. Sustained Use Discounts (SUDs) are automatic and do not create a commitment, so you can decommission at any time without penalty.
Service accountsGCP service accounts with workload identity have no Quake AI equivalent. Switch to OpenStack application credentials.
GKE workloadsGKE → self-managed K8s is the most complex migration. See the Kubernetes migration guide.
Firewall deny rulesGCP supports deny rules with priority. Neutron is allow-only. Rethink deny-based postures.
QCOW2 image exportOn GCP you export custom images as QCOW2 without a manual qemu-img step; Cloud Build converts internally.
Custom machine typesGCP supports arbitrary vCPU/RAM ratios via custom machine types. Apply the ratio-based Quake AI flavor selection: calculate GiB per vCPU and select the family (m2a for 4:1, r2a for 8:1, c2a for 2:1, s1a for shared).

See also#

Usage Guidelines

The sample code, software libraries, command line tools, proofs of concept, templates, and other related technology on this page (including any of the foregoing that is provided by Quake AI personnel) is provided to you as Quake AI Content under the Quake AI Customer Agreement, or the relevant written agreement between you and Quake AI (whichever applies). Do not use this Quake AI Content in your production accounts, or on production or other critical data. You are responsible for testing, securing, and optimizing the Quake AI Content (such as sample code) as appropriate for production grade use based on your specific quality control practices and standards. Deploying Quake AI Content may incur Quake AI charges for creating or using Quake AI chargeable resources, such as running Compute instances or storing data in Object Storage. Your use is also subject to the Acceptable Use Policy.

Comparisons to third-party providers in this material reflect publicly documented behavior as of the validation date below. Pricing, quotas, service limits, and feature availability change frequently on every cloud. Verify provider-specific claims against the provider's own current documentation before relying on them for a procurement, architecture, or migration decision.

For the full policy, see Usage Guidelines.

Last validated: 22.06.2026

Quick answers

Was this page helpful?