Migrate from GCP VPC to Quake AI
Coming from another cloud?
▸Google Cloud·VPC, Firewall Rules, Cloud Load Balancing, Cloud DNS
Firewall Rules
- GCP firewall rules are VPC-level with target filtering by network tags or service accounts; OpenStack security groups attach to ports.
- GCP rules are stateful (implied return traffic); OpenStack security groups also stateful but per Neutron port.
- GCP firewall supports priority (0-65535) with explicit deny rules; OpenStack security groups are allow-only (implicit deny).
- GCP hierarchical firewall policies apply org/folder-wide; OpenStack has no equivalent scope.
Cloud Load Balancing
- GCP offers external and internal, global and regional, HTTP, TCP, and UDP load balancers. Quake AI workloads use a self-managed reverse proxy or Kubernetes LoadBalancer Service.
- GCP global HTTP(S) load balancing uses one anycast IP across regions. Self-managed Quake AI edges use the public IP and topology you provision.
- GCP integrates Cloud CDN, Cloud Armor (WAF/DDoS) with LBs; OpenStack has no native CDN/WAF integration.
- GCP backend services use health checks and instance groups or NEGs. Self-managed Quake AI edges use proxy upstreams or Kubernetes service selectors.
Migrate from GCP VPC to Quake AI
GCP's global VPC model is architecturally unique among cloud providers and requires the most significant conceptual restructuring for migration. A single GCP VPC spans all regions within a project, with regional subnets, global firewall rules that support both allow and deny actions with priority ordering, and hierarchical firewall policies. On Quake AI, the Network service (OpenStack Neutron) is regional by design: each region gets its own network, subnet, and router. Firewall deny rules and policy hierarchies collapse into flat, allow-only security groups.
Service mapping#
Google Cloud to Quake AI
| Google Cloud service | Quake AI equivalent | Key difference |
|---|---|---|
| Static External IP | Floating IPs | GCP static IPs are regional or global resources, with unassociated IPs metered per-hour; OpenStack floating IPs are pool-based. See the GCP... see details |
| Cloud NAT | NAT | GCP Cloud NAT is a managed service on top of Cloud Router; OpenStack SNAT is built into the L3 router agent/OVN. GCP NAT supports port... see details |
| Cloud Load Balancing | Network | GCP offers external and internal, global and regional, HTTP, TCP, and UDP load balancers. Quake AI workloads use a self-managed reverse... see details |
| VPC Networking | Networking | Per-cluster Neutron networks + floating IPs; GKE shared VPC with alias IP ranges. Kubernetes LoadBalancer behavior replaces Google Cloud... see details |
| VPC Network | Networks | GCP VPC is global (spans all regions) whereas OpenStack Neutron networks are project-scoped and region-local. GCP uses shared VPC for... see details |
| Network Interface (VM network config) | Ports | GCP VMs have network interfaces attached at creation; OpenStack ports are explicit Neutron resources manageable independently. GCP... see details |
| Cloud Router | Routers | GCP Cloud Router is a BGP speaker for dynamic route exchange with VPN/Interconnect; OpenStack routers are L3 gateways with static routes.... see details |
| Firewall Rules | Security Groups | GCP firewall rules are VPC-level with target filtering by network tags or service accounts; OpenStack security groups attach to ports. GCP... see details |
| Subnets | Subnets | GCP subnets are regional (cover all zones in a region); OpenStack subnets are project-scoped within a network. GCP supports secondary IP... see details |
Prerequisites#
- A Quake AI account with application credentials
- The OpenStack CLI installed and configured
- An inventory of your GCP resources: VPCs, subnets, firewall rules (including hierarchical policies), Cloud NAT, static external IPs, Cloud Load Balancers, and Cloud DNS zones
- An SSH key pair imported to Quake AI (
openstack keypair create --public-key)
Topology mapping#
The key restructuring: GCP's single global VPC with regional subnets becomes per-region Neutron deployments. Applications that relied on cross-region VM communication within one GCP VPC require explicit connectivity setup on Quake AI.
| GCP concept | Neutron equivalent | Notes |
|---|---|---|
| VPC (global) | Network (regional) | GCP VPC spans all regions; Neutron networks are per-region |
| Regional Subnet | Subnet | Direct match; Neutron subnets are inherently regional |
| Cloud Router | No equivalent | BGP dynamic routing for HA VPN and Cloud Interconnect, and the control plane for Cloud NAT. On Quake AI, the Neutron router provides SNAT directly. |
| VPN Gateway | Software VPN on instance | No managed VPN; implement WireGuard or OpenVPN |
| External static IP | Floating IP | Regional, reservable, re-assignable |
| Firewall Rules (allow) | Security Group rules | Target tags become security group references |
| Firewall Rules (deny) | No equivalent | Neutron SGs are allow-only; see translation below |
| Hierarchical Firewall Policies | No equivalent | No policy hierarchy; all rules are flat per SG |
| Network tags | Security Group assignment | Tags target firewall rules; SGs assign to ports |
| Service Account network tags | No equivalent | Must use SG IDs as proxy |
| Cloud NAT | Router (SNAT) | Router SNAT is the equivalent; no separate object |
| Shared VPC | No equivalent | Cross-project network sharing. In GCP Shared VPC, a host project owns the network and service projects attach workloads. On Quake AI, each project (tenant) has its own isolated network. Map each GCP service project to a separate Quake AI project with its own network stack, and use a VPN overlay or public endpoints for cross-project communication. |
| VPC Network Peering | No equivalent | No network peering on Quake AI |
Set up the Neutron equivalent#
For each GCP region your workloads occupy, create a separate Neutron network:
openstack network create my-network
openstack subnet create my-subnet \
--network my-network \
--subnet-range 10.0.0.0/24 \
--gateway 10.0.0.1 \
--dns-nameserver 8.8.8.8
openstack router create my-router
openstack router set my-router --external-gateway PublicStatic
openstack router add subnet my-router my-subnetSecurity rule translation#
GCP's firewall model is the most different from Neutron of the five providers: it supports both allow and deny rules with priority ordering, hierarchical policies (Org, Folder, VPC level), and targeting by network tags or service accounts.
| Dimension | GCP Firewall Rules | Neutron Security Groups |
|---|---|---|
| Rule model | Allow and deny | Allow-only |
| Evaluation | Priority-ordered (0 = highest) | All rules additive |
| Default inbound | Deny-all (custom VPC; the GCP default VPC includes default-allow-internal and other permissive rules to audit before migration) | Deny-all |
| Default outbound | Allow-all (implied) | Allow-all |
| Applied to | VMs via network tags or service account | Ports via security group assignment |
| Scope | VPC-level (all matching VMs) | Per-port |
| Hierarchical | Yes (Org/Folder/VPC policies) | No hierarchy |
| Source types | CIDR, tags, service accounts | CIDR, Security Group ID |
Translating deny rules#
GCP commonly uses explicit deny rules to block specific traffic at a lower priority than allow rules. In Neutron, you cannot create deny rules. The migration approach:
- For each deny rule, identify what traffic it blocks.
- Verify that no allow rule exists in your Neutron security groups for that traffic. Neutron's implicit deny-all ingress handles the rest.
- For deny rules that carve out exceptions from a broader allow rule (e.g., allow
0.0.0.0/0except10.0.0.0/8), split the allow rules into specific non-overlapping CIDRs that exclude the denied range.
Translating hierarchical policies#
GCP hierarchical firewall policies (Org, Folder, VPC) with goto_next delegation have no Neutron equivalent. Consolidate all policy layers into a flat set of security group rules:
- Enumerate all effective rules per instance (accounting for priority at each policy level).
- Group instances by access pattern.
- Create one Neutron security group per access pattern.
3-tier app example#
GCP source:
Priority 100: Allow TCP 80,443 from 0.0.0.0/0 to tag web-tier
Priority 100: Allow TCP 8080 from tag web-tier to tag app-tier
Priority 100: Allow TCP 5432 from tag app-tier to tag db-tier
Priority 65534: Deny all ingress (implicit)
Priority 65535: Allow all egress (implied)Neutron target:
openstack security group create sg-web
openstack security group rule create sg-web \
--protocol tcp --dst-port 80 --remote-ip 0.0.0.0/0 --ingress
openstack security group rule create sg-web \
--protocol tcp --dst-port 443 --remote-ip 0.0.0.0/0 --ingress
openstack security group create sg-app
openstack security group rule create sg-app \
--protocol tcp --dst-port 8080 --remote-group sg-web --ingress
openstack security group create sg-db
openstack security group rule create sg-db \
--protocol tcp --dst-port 5432 --remote-group sg-app --ingressEach GCP network tag maps to a Neutron security group. All deny rules are dropped because Neutron's implicit deny-all achieves the same result when the corresponding allow rules are absent. The hierarchical policy layer collapses into these three flat security groups.
Load balancer migration#
Replace GCP load balancing with a regional reverse proxy on Quake AI and an external edge where the source architecture uses global services.
| GCP source | Quake AI migration pattern |
|---|---|
| Global External HTTP(S) Load Balancer | External CDN or DNS traffic manager in front of a Quake AI origin |
| Regional External HTTP(S) Load Balancer | HAProxy, Nginx, Caddy, Traefik, or Envoy on a Compute instance |
| External Network Load Balancer | HAProxy or Nginx stream proxy |
| Cloud Armor | External CDN/WAF |
| URL maps | Host and path routing in the reverse proxy |
Assign a floating IP to the proxy instance. Install TLS certificates on the proxy with Certbot, use Caddy's ACME support, or terminate public TLS at the external edge.
Floating IP setup#
| GCP External Static IP | Neutron Floating IP |
|---|---|
| Regional or global scope | Regional only |
| Reservable by name, attachable to VM/LB | Allocatable from pool, attachable to port |
| Global IPs used for global LBs (anycast) | No global anycast available |
| Premium vs Standard network tier | Single tier on Quake AI. GCP Premium routes over Google's backbone and Standard routes over the internet; both assign regional IPs to VMs. |
| IPv6 supported | IPv6 not documented on Quake AI |
| Charged when unattached on GCP | Included in Quake AI pricing |
openstack floating ip create PublicStatic
openstack server add floating ip MY_INSTANCE FLOATING_IP_ADDRESSDNS cutover#
GCP Cloud DNS must be replaced by an external provider. Quake AI has no managed DNS service.
- Export records:
gcloud dns record-sets list --zone=ZONE_NAME --format=json - Lower TTLs: Use
gcloud dns record-sets updateto lower TTLs to 300 seconds; wait for current TTL propagation. - Import at new provider: Standard BIND zone file or Terraform.
- Validate:
dig @NEW_NAMESERVER example.com A - Update registrar NS records.
- Monitor for 48 hours and restore TTLs after successful cutover.
Validation checklist#
- Per-region Neutron networks, subnets, and routers are operational
- Security group rules cover the intent of all GCP firewall allow rules
- GCP deny rules are handled by the absence of corresponding allow rules in Neutron
- Hierarchical policy intent is captured in flat security group rules
- Network tag-to-security-group mapping is documented and applied to ports
- Cross-region communication is functional (VPN overlay or public endpoints)
- Floating IPs are associated with the correct instance ports
- Reverse proxy health checks pass for application backends
- DNS records resolve to the proxy floating IP or external edge hostname
- Applications respond correctly through the full network path
Provider-specific gotchas#
| Topic | Detail |
|---|---|
| Global VPC re-architecture | GCP workloads in multiple regions under one VPC have internal routing without configuration. On Quake AI, each region is a separate deployment. Cross-region communication must be redesigned. |
| Egress pricing | GCP bills egress per-GiB with rates that vary by source-destination pair, often higher for cross-continental routes. Quake AI's bandwidth-inclusive model is a major cost reduction for egress-heavy workloads. See GCP network pricing |
| Cloud Armor / DDoS | GCP Cloud Armor provides DDoS mitigation and WAF at the global load balancer. Place a CDN/WAF edge service in front of the Quake AI origin. |
| Shared VPC | GCP Shared VPC (XPN) shares a network across multiple projects. Each Quake AI project is isolated. Cross-project networking must be redesigned. |
| Firewall rule migration at scale | Large GCP deployments may have hundreds of firewall rules with complex tag targeting and hierarchical policies. Script the migration: enumerate effective rules per instance, group by access pattern, and generate Neutron SG definitions. |
See also#
- Migrating from GCP to Quake AI: full cross-service migration hub
- Migrate from GCE to Quake AI Compute: compute workload migration
- Network migration guides: all provider guides
- Create a security group: Neutron security group setup
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
See Also
Network Migration Guides
Shares: Nginx, Migration
Migrate from AWS VPC to Quake AI
Shares: Nginx, Migration
Migrate from Azure VNet to Quake AI
Shares: Nginx, Migration
Migrate from DigitalOcean VPC to Quake AI
Shares: Nginx, Migration
Migrate from Hetzner Cloud Networks to Quake AI
Shares: Nginx, Migration