Deploying Hive Gateway to Google Cloud Platform
Google Cloud Platform (GCP) is a suite of cloud computing services powered by Google. It is easy to use Hive Gateway with GCP.
Prerequisites
You will first need to install the GCP command-line tool: gcloud
.
You can find instructions here.
If you already have gcloud
installed, make sure it is up to date with gcloud components update
.
Create a new project and make sure billing is enabled.
Running these examples requires you to have billing enabled on your GCP account. It should not cost more than a few cents, but don’t forget to clean up your project after you are done to avoid unexpected charges.
Cloud Functions
Cloud Functions is a serverless execution environment for building and connecting cloud services. With Cloud Functions, you write simple, single-purpose functions that are attached to events, such as an HTTP request.
It is probably the most straight forward way to deploy a Hive Gateway to GCP.
Before you start, make sure you read the Serverless / On the Edge page.
Installation
npm i @google-cloud/functions-framework @graphql-hive/gateway graphql
Don’t forget to add the main
field to your package.json
. Google Cloud Functions rely on it to
know which file to run.
This example uses ESM syntax, so you should set "type": "module"
in your package.json
.
Usage
import { createGatewayRuntime } from '@graphql-hive/gateway'
export const graphql = createGatewayRuntime(/* Configuration */)
You can now deploy your function with gcloud
CLI:
$ gcloud functions deploy graphql --runtime nodejs18 --trigger-http --allow-unauthenticated
You can now test your function by using the URL found in the httpsTrigger.url
property returned by
the previous command or by using the gcloud
CLI:
gcloud functions describe graphql
Cloud Run
Cloud Run is the Platform as a Service by Google. It is straightforward to use Hive Gateway with it.
Installation
Create a new Node project and add Hive Gateway to its dependencies.
npm i @graphql-hive/gateway graphql
This example uses ESM syntax, so you should set "type": "module"
in your package.json
.
Add a start
script to your package.json
. Cloud Run needs to know how to start your application.
gateway.config.ts
{
"name": "hive-gateway-cloud-run-guide",
"version": "1.0.0",
"type": "module",
"scripts": {
"start": "hive-gateway supergraph"
},
"dependencies": {
"graphql": "latest",
"@graphql-hive/gateway": "latest"
}
}
You can now deploy to Cloud Run. You can use all default values, except the last one, which allows unauthenticated access to your service.
$ gcloud run deploy --source .
If this is your first time using Cloud Run, enabling the service can take up to a few minutes to
be fully effective. If you encounter any 403 Forbidden
errors, please wait for 2 minutes and try
again.
You can now access your API using the URL provided by gcloud
. The default GraphQL endpoint is
/graphql
.
If you need to use TypeScript or any other tool that requires a build phase, such as code generation, add a Dockerfile to the root of your project so that Cloud Run can build a custom image for you.