blob: f5db6789ee8942bc72a8738ba86fbc0c22c09694 [file] [log] [blame] [view]
The Spanner integration is a work in progress and is only partially supported for now.
# Running the Spanner Emulator
For local runs we can run a local instance of the spanner emulator alongside pgadapter
(which provides a postgresql interface to spanner). This combination is already packaged as a
docker image, so the most convenient way is to execute it via docker.
make run-spanner-emulator
Each execution of the above cmd tears down the database and creates a new one.
Since we are running the emulator in docker, it is extremely cheap to teardown
and restart the database and not have to worry about leaving things in an inconsistent state.
If you are using `make run-demo-instance` to run a local FE instance, it will automatically
execute the `run-spanner-emulator` target thereby giving you a fresh database instance on each execution.
# Set up Production Instance
This step is only when we are creating a new instance (equivalent of setting up an entirely
new database service deployment). For majority of the cases, you can use an existing instance
and create new databases within the instance.
Instance creation is handled by Terraform. You can update the following files to create new
instances.
**skia-infra-public**: https://source.corp.google.com/piper///depot/google3/configs/cloud/gong/services/skia_infra/skia_infra_public/spanner.tf
**skia-infra-corp**: https://source.corp.google.com/piper///depot/google3/configs/cloud/gong/services/skia_infra/skia_infra_corp/spanner.tf
# Create a new Database
The easiest option to create a new database is via the cloud console. Navigate to the spanner
instance in the GCP project and use the "Create Database" option.
Note that you may need elevated permissions in order to create a database. Run the following
command to get the necessary access.
grants add --wait_for_twosync --reason="b/377530262 -- <Reason for elevating>" skia-infra-breakglass-policy:2h
# Run Queries
All the team members have been given read permissions for the spanner databases. You can run
the queries in Spanner studio available in the GCP console.
# Run a local instance against Production Database (Readonly)
The spanner instances have been configured to provide readonly access to the developers working
on perf. If you want to run a local FE instance against the production spanner database, run the
following command from the `perf` directory.
./run_with_spanner.sh p=<gcp project> i=<spanner instance id> d=<database name> config=<path to perf instance config file>
The values for the arguments can be found in the relevant config file under
`//perf/configs/spanner/*.json`.
You may get authentication errors during server startup. PGAdapter uses the GCP credentials on
your machine to authenticate with Spanner. Refresh your credentials with the following commands.
gcloud config set project <gcp project>
gcloud auth application-default login
Follow the instructions printed in these commands to refresh the local credentials and then
run the `./run_with_spanner.sh` command again.