Apollo Router
Apollo Router is the Rust implementation of the Apollo Federation runtime.
Hive ships a custom build of Apollo Gateway, because that’s how native extensions works.
With the custom build, Apollo Gateway will poll the supergraph from the high availability CDN to ensure production deployments without interruptions.
Installation
Make sure you have published all your subgraph schemas to your Federation target on the Hive registry. Once you have all subgraph schemas published and the subgraphs can be composed, the latest valid supergraph is always available via the CDN.
You also need to create a CDN Access Token, that will be used for authenticating the supergraph polling from the CDN.
Download Apollo Router for Linux (x86_64
), MacOS (x86_64
) or Windows (x86_64
):
curl -fsSL https://graphql-hive.com/apollo-router-download.sh | bash
Start the router:
HIVE_CDN_ENDPOINT="..." \ # The endpoint of your CDN access token
HIVE_CDN_KEY="..." \ # The CDN access token
./router
Configuration
HIVE_CDN_ENDPOINT
- the endpoint Hive generated for you in the previous stepHIVE_CDN_KEY
- the access keyHIVE_CDN_POLL_INTERVAL
- polling interval (default is 10 seconds)HIVE_CDN_ACCEPT_INVALID_CERTS
- accepts invalid SSL certificates (default isfalse
)HIVE_REGISTRY_LOG
- defines the log level for the registry (default isINFO
)HIVE_CDN_SCHEMA_FILE_PATH
- where to download the supergraph schema (default is./supergraph-schema.graphql
)
The HIVE_CDN_ENDPOINT
variable should not include any artifact suffix (for example,
/supergraph
), it should be in the following format:
https://cdn.graphql-hive.com/artifacts/v1/TARGET_ID
Usage Reporting
You can send usage reporting to Hive registry by enabling hive.usage
plugin in the config file
(router.yaml
).
Configuration
HIVE_TOKEN
- Your ‘Registry Access Token’ as configured in hive For self hosted Hive:HIVE_ENDPOINT
- The usage endpoint (defaults to https://app.graphql-hive.com/usage)
Start the router:
HIVE_TOKEN="..." \
HIVE_CDN_ENDPOINT="..." \
HIVE_CDN_KEY="..." \
./router --config router.yaml
supergraph:
listen: 0.0.0.0:4000
plugins:
hive.usage:
{}
# Default: true
# enabled: true
#
# Sample rate to determine sampling.
# 0.0 = 0% chance of being sent
# 1.0 = 100% chance of being sent.
# Default: 1.0
# sample_rate: "0.5",
#
# A list of operations (by name) to be ignored by Hive.
# exclude: ["IntrospectionQuery", "MeQuery"],
#
# Uses graphql-client-name by default
# client_name_header: "x-client-name",
# Uses graphql-client-version by default
# client_version_header: "x-client-version",
#
# A maximum number of operations to hold in a buffer before sending to GraphQL Hive
# Default: 1000
# buffer_size: 1000
#
# Accepts invalid SSL certificates
# Default: false
# accept_invalid_certs: true