# Coming from GCP

Source: https://docs.quake.ai/docs/platform/migration/coming-from-gcp
Markdown: https://docs.quake.ai/docs/platform/migration/coming-from-gcp.md

---

# Coming from GCP

If you have been using Google Cloud Platform, here is how Quake AI maps to what you run today. Quake AI maps compute, storage, networking, and identity to OpenStack-backed services with fixed monthly pricing on infrastructure. Quake AI runs on [OpenStack](/docs/platform/migration/openstack): the services below expose standard OpenStack APIs with upstream documentation. Managed application services are where the platforms diverge most.

## Quick reference

| GCP | Quake AI | OpenStack project | Key difference |
|---|---|---|---|
| Compute Engine VM | Instance | Nova | Machine types vs flavors; per-second billing with sustained-use discounts vs fixed monthly |
| Cloud Storage bucket | Container | Swift | GCS exposes an S3-compatible XML API via HMAC keys (extra setup required); Quake AI Swift exposes an S3 endpoint directly. Lifecycle rules and storage classes do not transfer |
| VPC network | Network | Neutron | Subnet-router model; no GCP-style auto/custom subnet modes |
| Firewall Rules | Security Group | Neutron | GCP uses network-level rules with priority ordering; Neutron uses per-instance security groups |
| Cloud Load Balancing | Self-managed edge proxy or API gateway | Nova + Neutron | Run Caddy, SafeLine, or APISIX on a VM with a floating IP; use an external CDN for global edge delivery |
| GKE | Kubernetes Cluster | Magnum | Managed control plane both. GKE Standard has self-managed node pools; GKE Autopilot (serverless, no node management) has no Quake AI equivalent. Magnum workers are self-managed Nova instances |
| Persistent Disk | Volume | Cinder | Same attach model; both NVMe-backed |
| Cloud IAM | Application Credential | Keystone | GCP IAM is org/folder/project hierarchy with fine-grained roles; Quake AI is project-scoped with 3 roles |
| Static external IP | Floating IP | Neutron | Same concept; allocate from pool, associate with instance |
| GCP Project | Project | Keystone | Same isolation unit |

## Compute: compute engine virtual machines → instances

**What maps directly:** You still launch VMs from images, choose a machine size, attach disks and networks, and use SSH keys. Instances are backed by [OpenStack Nova](https://docs.openstack.org/nova/latest/).

**What is different:** GCP publishes hundreds of machine types (e2, n2, c2, and custom shapes) with per-second billing, sustained-use discounts, and committed-use contracts. Quake AI exposes a curated catalog of **flavors** across four families (for example, `m2a.large` for 2 vCPU and 8 GiB RAM on a general-purpose shape) with **fixed monthly pricing** per resource tier. No sustained-use discount or custom machine type builder exists. Capacity planning maps to flavor + quota. See [Flavors](/docs/compute/concepts/flavors) for sizes and families.

```bash
openstack server create \
  --flavor m2a.large \
  --image "Ubuntu 24.04" \
  --network PublicEphemeral \
  --key-name "MY_SSH_KEY_NAME" \
  "MY_INSTANCE_NAME"
```

For the full workflow, see [Create an instance](/docs/compute/how-to/create-instance). For workload migration steps, see [Migrate from Compute Engine](/docs/compute/migration/migrate-from-gce).

## Object storage: Google Cloud Storage → containers (Swift, S3-compatible)

**What maps directly:** You store objects in containers (the GCS "bucket" analog), use keys and prefixes, and talk to an S3-compatible API. Object storage is backed by [OpenStack Swift](https://docs.openstack.org/swift/latest/).

**What is different:** GCS adds storage classes (Standard, Nearline, Coldline, Archive), lifecycle rules, event notifications via Pub/Sub, and fine-grained IAM at the bucket and object level. Quake AI exposes a single storage tier with an S3-compatible endpoint. You do not get lifecycle rules, storage class transitions, or event notifications.

**Tooling:** rclone and boto3 work when pointed at `object.us-east-2.rumble.cloud` with Quake AI credentials. On the GCP side, `gcloud storage` replaces the older `gsutil` CLI. Reaching GCS over the S3 API requires enabling XML API interoperability and creating HMAC keys, so standard boto3 or aws-cli tools need HMAC key configuration on the GCS side, not only a flag.

See [Object storage](/docs/object) and [Migrate from Google Cloud Storage](/docs/object/migration/migrate-from-gcs) for compatibility detail and cutover steps.

## Networking: Google Cloud VPC networks → Neutron networks

**What maps directly:** You define private address space, attach instances to subnets, and control reachability with routing and firewall rules. The Network service is [OpenStack Neutron](https://docs.openstack.org/neutron/latest/).

**What is different:** GCP VPCs support automatic and custom subnet modes, with subnets spanning regions and firewall rules applied at the network level with priority ordering. On Quake AI, you create a **network**, attach a **subnet**, and connect it to a **router**. No automatic subnet mode, cross-region subnets, or priority-based rule ordering exists. Routers attach directly to the external network for outbound access.

See [Networks](/docs/network/concepts/networks) for the topology Quake AI expects. For network migration steps, see [Migrate from GCP VPC](/docs/network/migration/migrate-from-gcp-vpc).

## Security: Google Cloud firewall rules → Neutron security groups

**What maps directly:** You still express allow/deny rules by protocol, port, and source CIDR. Both platforms default to deny-inbound.

**What is different:** GCP firewall rules are network-level resources with explicit priority ordering (lower number = higher priority). Neutron **security groups** bind to each instance port, have no priority ordering, and use an additive model: all rules that match are applied. When migrating, re-create your allow rules as security group rules. If you relied on GCP deny rules with priority ordering, rethink the logic for an additive-only model.

Follow [Create a security group](/docs/network/how-to/create-security-group).

## Block storage: persistent disks → Cinder volumes

**What maps directly:** You create a volume, attach it to one instance, format, mount, snapshot, and detach. Block storage is [OpenStack Cinder](https://docs.openstack.org/cinder/latest/).

**What is different:** GCP segments Persistent Disks into pd-standard, pd-balanced, pd-ssd, and pd-extreme with provisioned IOPS tiers. Quake AI exposes **Cinder volumes backed by NVMe** with the same attach/detach workflow. No separate IOPS tiers exist.

See [Create a volume](/docs/block/how-to/create-volume).

## Kubernetes: from GKE to Magnum

**What maps directly:** You get a Kubernetes API, worker nodes, and cluster-scoped objects. Clusters are provisioned through [OpenStack Magnum](https://docs.openstack.org/magnum/latest/).

**What is different:** GKE manages node pools, offers cluster auto-scaler, node auto-provisioning, and Autopilot mode. Magnum gives you a **managed control plane** from a cluster template, but **worker nodes are Nova instances** you size, patch, and scale. No Autopilot equivalent is available.

Cluster operations and templates are covered in [Kubernetes](/docs/kubernetes). For cluster migration steps, see [Migrate from GKE](/docs/kubernetes/migration/migrate-from-gke).

## Automation: from gcloud and Infrastructure Manager to OpenTofu

**What maps directly:** You still declare infrastructure as code and apply it as atomic deployments.

**What is different:** GCP uses `gcloud` CLI for imperative operations and Infrastructure Manager (Infra Manager) or Terraform with the `google` provider for declarative infrastructure. (Google Cloud Deployment Manager was deprecated and shut down on 31.03.2026; Infra Manager is its Terraform-backed successor.) On Quake AI, **OpenTofu** (or Terraform) with the [`openstack` provider](https://registry.terraform.io/providers/terraform-provider-openstack/openstack/latest/docs) is the usual path for new projects. [Heat](/docs/automation) stacks are also available for OpenStack-native templates.

Get started with [Infrastructure as Code with OpenTofu](/docs/automation/how-to/getting-started-iac).

## Identity: Cloud IAM → Keystone application credentials

**What maps directly:** You still authenticate principals, rotate secrets, and scope access to a project. Identity is handled by [OpenStack Keystone](https://docs.openstack.org/keystone/latest/).

**What is different:** GCP IAM spans an org, folder, and project hierarchy with fine-grained, resource-level roles. Quake AI uses **project-scoped application credentials** and three roles: `admin`, `member`, and `reader`. No org or folder tier exists, and authorization is coarser, so you isolate blast radius with separate projects instead of layered IAM bindings.

Generate credentials in the Console: [Generate application credentials](/docs/platform/access/generate-app-credentials).

## Self-managed services and deployment patterns

Quake AI provides infrastructure primitives: compute, networking, storage, Kubernetes, and automation. Application-level managed services are not part of the platform. You compose your own stack from these primitives, using the same open-source tools you already know.

| GCP service | Status on Quake AI | Alternative |
|---|---|---|
| Cloud Functions / Cloud Run | Not available | Containers on VMs or Kubernetes |
| Cloud SQL | Not available | Self-managed PostgreSQL or MySQL on a VM |
| Cloud Spanner / Firestore / Bigtable | Not available | Self-managed databases on VMs |
| Pub/Sub | Not available | Self-managed RabbitMQ, Redis, or NATS |
| BigQuery | Not available | Self-managed ClickHouse, PostgreSQL, or similar |
| Memorystore | Not available | Self-managed Redis on a VM |
| Cloud DNS | Not available | External DNS provider (Cloudflare or similar) |
| Cloud CDN | Not available | Cloudflare or self-managed caching |

## Platform differences

- **Outbound transfer:** GCP bills for per-GB data egress with rates that vary by region and destination (see the [GCP network pricing page](https://cloud.google.com/vpc/network-pricing)). Quake AI includes outbound transfer in plan pricing, so there is no separate egress line item to model.
- **Fixed monthly pricing:** Compute is billed per flavor per month rather than per-second metering, sustained-use discounts, or committed-use contracts. Core networking objects such as networks, routers, floating IPs, and security groups are included in plan pricing instead of metered as separate hourly line items.
- **Flat authorization:** Three project-scoped roles (admin, member, reader) replace GCP's layered org, folder, and project IAM hierarchy. This is less granular than Cloud IAM; you compensate with project-level isolation.
- **OpenStack portability:** Public APIs use standard OpenStack projects including Nova, Neutron, Cinder, Swift, Magnum, and Keystone. The same toolchains transfer to other OpenStack clouds.

## Next steps

- [Quickstart](/docs/quickstart)
- [Migrate from Google Cloud Storage](/docs/object/migration/migrate-from-gcs)
- [Infrastructure as Code with OpenTofu](/docs/automation/how-to/getting-started-iac)
- [How Quake AI uses OpenStack](/docs/platform/migration/openstack)


  See the [full GCP migration guide](/docs/platform/migration/from-gcp) for a service-by-service migration journey.
