By default, the Gravitee API Manager rely on MongoDB for its configuration and Elasticsearch for log analytics, but deploying many components can by more tricky and more expensive than having a single distributed data store. To simplify the stack, the Gravitee repository for Elassandra can be used to store Gravitee configuration, Rate Limits, Logs and Metrics, along with your application data in Elassandra (aka Elasticsearch + Cassandra), with the following benefits:
- Distributed Gravitee configuration on many datacenters through the Cassandra replication (in active/active mode).
- Elasticsearch reporting for Gravitee analytics (gravitee logs and metrics).
- Scalability by adding Elassandra nodes (without re-indexing) and datacenters (for geo localisation concerns or workload separation)
- Reduce the global complexity and TCO by using the same NoSQL datastore for both Gravitee and APIs data storage.
We will now see how to deploy all these components under Kubernetes.
In order to expose the Gravitee components to the internet (gateways and management services), we obviously use Traefik, the modern reverse proxy. Traefik watches for incoming kubernetes ingresses events and automatically deploy routers, services, handlers, etc…
Traefik is deployed using a HELM Chart as follow: