AI Native WorkshopGo from AI experimentation to AI-native execution across your organization.
Render → Google Cloud migration

Render to Google Cloud in an hour.
Fully automated.

One command. An agent reads your repository and your render.yaml, then deploys into the Google Cloud project you already own - after you approve the plan.

No step is destructiveBoth stacks run in parallelRender stays up until you move DNS
your-app — qovery agent
$ deploy this project with Qovery
Scanning repository...
web Node.js 20 Dockerfile generated
worker Node.js 20 detected from render.yaml
scheduler cron 2 jobs
database PostgreSQL 15 Render Postgres, connected remotely
Plan: 3 services, 1 external database, 12 environment variables
Nothing has been created yet. Approve to continue.
200+ companies run on their own cloud with Qovery4.8 on G2 · 80+ reviews
  • Talkspace
  • Alan
  • Powens
  • Prezi
  • Prosperity
  • Getsafe
Migrated from Heroku
We migrated our whole staging environment with a single prompt. Production was a one-click clone of staging. Once the tests gave us confidence we moved DNS off Heroku - we have been running production on our own cloud with Qovery ever since.
Miguel VictoriaSoftware Engineer, Sofive
Migrated from Heroku
We liked the Heroku experience, and we knew the cloud meant skills and effort we did not have spare - that is why we kept putting the migration off. We do not regret doing it with Qovery. Deployments that took me over two hours now take 30 minutes.
Kyle FlavinDirector of DevOps, RxVantageCase study →
Where Render stops

Render is a good platform right up until it is not.

Nothing below is a criticism of how Render works. They are the boundaries of the model: a platform that runs your services in its own account can only ever offer you what it has already built.

Five regions, and a service cannot move between them

Oregon, Ohio, Virginia, Frankfurt and Singapore. If your customers or your regulator need somewhere else, there is no somewhere else. Render also does not support changing the region of an existing service - you create a new one and migrate the data across. And because each region has its own private network, two services in two regions cannot talk privately at all; that traffic crosses the public internet and you secure it yourself. In your own Google Cloud project a region is a deployment parameter. Any Google Cloud region, with multi-region and multi-cluster from one control plane.

The features that make it production-grade are plan gates

Autoscaling, preview environments and audit logs start at Pro. SAML SSO, SCIM and HIPAA-enabled workspaces start at Scale. Dedicated outbound IPs need Pro and then cost an additional monthly fee on top. Even reading Render’s SOC 2 Type 2 report requires Pro and an NDA. None of these are exotic - they are what a security review asks about, and each is a line on a pricing page rather than a property of infrastructure you control. In your own project, Google Cloud IAM governs access, Cloud Audit Logs records what happened, and the three fixed egress IPs are simply how the network is built. No tier attached.

Fixed instance shapes, and disks that block scaling

Instance types are fixed RAM and CPU tiers, so a service needing slightly more memory buys a whole size class more of everything. A service with a persistent disk attached cannot run more than one instance at all, which turns a storage decision into a hard scaling ceiling. On Compute Engine the node shape is yours to choose, storage is a volume claim rather than a constraint, and Qovery can place interruptible pools on cheaper capacity while the web tier stays on demand.
How the migration runs

Three steps, then the agent does it.

Your side takes about five minutes. Everything after that is automated.

  1. 01

    A service account key provisions the network and a GKE cluster in your own project - about twenty minutes, and nothing leaves your boundary. Qovery gets a role you can read, scope down or revoke. Talk to a migration engineer before you connect anything.

  2. 02

  3. 03

  4. 04

    Optional
In the Google Cloud console
One service account, about twenty minutes.
network
your VPC, three fixed egress IPs
cluster
GKE, in your region
access
a role scoped to Qovery
10–60 min

From there it is automatic. Your apps come up running and live on Google Cloud, reachable on a public URL - while the Render stack keeps serving traffic untouched.

What it costs

You pay Google Cloud. And it discounts you automatically.

Render sells you a tier. Google Cloud sells you a machine, applies sustained use discounts to it without being asked, and lets you commit for more on top. For a service that runs all month - which is what a web service is - that discount arrives whether or not anyone negotiates it.

Depends on your instance types and counts, your Postgres and Key Value plans, egress, data volume and region. A migration engineer will model your estate against the equivalent Google Cloud shape before you commit to anything.

Specific to Google Cloud

What Google Cloud gives you that five fixed tiers cannot.

Render asks you to pick from a short list of instance types in a short list of regions. Google Cloud asks you what the service actually needs, and where.

Custom machine types instead of size classes

Google Cloud lets you define the exact vCPU and memory a service needs. On Render a worker that wants a little more memory has to buy the next tier of everything, so a memory-heavy job and a CPU-heavy API end up subsidising each other. Sizing per service is the single easiest cost reduction available immediately after a migration, and it is not something a tier list can express.

Sustained use discounts you do not have to ask for

Google Cloud applies sustained use discounts automatically to instances that run for most of the month, and committed use discounts on top if you commit for one or three years. The first needs no contract and no forecast. Render has neither mechanism, because you are buying a plan rather than capacity.

Every Google Cloud region, and private networking between them

Render offers five regions, will not move an existing service between them, and gives each region a separate private network so cross-region services must talk over the public internet. In your own project you choose from Google’s full region list, and VPC peering, Private Service Connect and Cloud NAT make cross-region private traffic a configuration rather than a rewrite.
Qovery is not a PaaS

Our control plane. Your account, your bill.

Qovery sits above the infrastructure and never owns it. Every cluster, database and bucket is provisioned inside the Google Cloud project you already hold - Google Cloud invoices you directly.

  • We do not take a cut of your Google Cloud spend. A flat subscription, whether your bill is $2k or $200k.
  • We push it the other way: idle nodes, oversized requests and preview environments left running get flagged so you stop paying for them.
  • Render runs all of this in its own account. Qovery runs it in yours.

Not sure which Google Cloud services fit your workload? A solution engineer will map it with you.

QoveryCONTROL PLANE
deploymentsenvironmentspreview envsRBAC + auditcost signals
provisions standard Terraform and Kubernetes manifests
Your Google Cloud project
invoiced by Google Cloud, directly to you
VPC · your network policy
GKE clusterwebworkercronpreview-pr-482Cloud SQLMemorystoreCloud Storagesecrets
IAM: yours · data residency: yours · audit trail: yours

Stop paying Qovery and the stack keeps running - the manifests and qovery/qovery Terraform are already in your account.

Leave Render

Your first service on Google Cloud,
live within the hour.

Any Google Cloud region, with multi-region and multi-cluster from one control plane. Nothing you do here touches your existing Render services until you decide to move the domain.

Frequently asked

Render to Google Cloud

Something not covered here? Talk to a migration engineer - they have done this on estates larger than yours.

How long does a Render to Google Cloud migration take?

First app live in under an hour. Full estates finish in days: the agent reads your render.yaml Blueprint, so the service topology you already declared becomes the deployment plan rather than something anyone retypes. The pace is set by your data and your change windows, not by the tooling.

Will migrating disrupt our running Render services?

No. Nothing in the process modifies or removes anything on Render. Both stacks run in parallel until you move DNS, and you can move it back.

Can Qovery migrate our Render Postgres database to Google Cloud?

Yes. Under 100 GB migrates live with minimal interruption. Larger datasets use a replication-based cutover rather than a dump and restore. The database lands in your own Google Cloud project on Cloud SQL for PostgreSQL, under your keys and your backup policy.

Does Qovery read our render.yaml?

Yes. A Blueprint already declares your services, their instance types, their environment groups and how they connect, which is most of a migration plan. The agent uses it as the starting point and asks about anything the file does not cover, then shows you the plan before creating a single resource.

Is Qovery just another Render?

No, and this is the whole difference. Render runs your services in Render’s account. Qovery installs into the cloud account you already own - you hold the cloud bill, the VPC, the cluster and the audit trail. The control plane is ours, the infrastructure is yours.

What happens if we stop using Qovery?

Everything keeps running. Qovery generates standard Terraform and native Kubernetes manifests in your account, so the estate outlives the subscription. Leaving Render means moving the workload; leaving Qovery does not.

Do our Google Cloud committed use discounts apply?

Yes. Workloads run on GKE inside your own project, so committed use discounts, sustained use discounts and any negotiated pricing apply exactly as they do to the rest of your estate. On Render you pay for instance hours and no volume commitment is available to you at all.

Can our applications reach BigQuery and Vertex AI directly?

Yes. Because the cluster runs inside your own project, workloads reach BigQuery, Vertex AI, Pub/Sub and Cloud Storage over Google internal networking, authenticated with Workload Identity rather than long-lived keys.

We already run a GKE cluster. Can Qovery use it?

Yes. Qovery can install onto an existing GKE cluster instead of creating one, which is the usual path when a platform team has already standardised on a network design or a node pool layout.

How does every Render primitive map to Google Cloud?

On Render
On Google Cloud
What changes
Web Service
GKE pod on Compute Engine
Autoscales on real utilisation, and because Google Cloud supports custom machine types the node shape matches what the service actually needs instead of the next tier up.
Background Worker
GKE pod in the same cluster
Long-running work without the 30-second router timeout.
Cron Job
Kubernetes CronJob
Real cron expressions instead of fixed ten-minute, hourly and daily buckets.
Private Service
A ClusterIP service on the cluster network
Reachable from your other workloads without a public URL - and, unlike a Render private network, reachable across regions because the network is yours.
Static Site
A static service behind your CDN
Served from your own bucket and CDN distribution, on the same domain and TLS certificate as the rest of the estate.
Render Postgres
Cloud SQL for PostgreSQL
Container mode for development, Cloud SQL for production - high availability, automated backups and point-in-time recovery, reachable over private IP rather than a public endpoint.
Render Key Value
Memorystore for Redis
Memorystore, sized independently of the application and attached to your VPC over private service access.
Message brokers
Pub/Sub or a Helm chart
Deployed by Qovery as a service inside your environment.
Persistent Disk
A PersistentVolumeClaim, or object storage
A service with a Render disk attached cannot run more than one instance. A PVC carries no such rule, and durable blobs belong in object storage rather than on a volume bolted to one pod.
Environment Groups
Qovery variables and secrets
Scoped per project, environment and service, with aliases and overrides instead of one flat list.
Preview Environments
Preview environments
One per pull request, created on open and shut down when idle - on every plan, rather than from Pro upward.
render.yaml Blueprint
Qovery environments and qovery/qovery Terraform
The agent reads your Blueprint to build the plan. What it writes out is standard Terraform and Kubernetes manifests in your own repository and account.
Render TLS and custom domains
Cloud Load Balancing with managed TLS
Cloud Load Balancing with Google-managed certificates, issued and renewed automatically, on the global anycast frontend.