APIM EE - MongoDB

gravitee-io/ee/apim/mongodb

Gravitee APIM Enterprise Edition with MongoDB backend

Deploys a full Gravitee API Management Enterprise Edition stack (Console, Portal, Gateway, and Management API) backed by MongoDB for persistence and Elasticsearch for analytics. The Kafka Gateway is enabled by default, allowing the APIM Gateway to act as a Kafka proxy — clients connect using the Kafka protocol via *.kafka.gck.local:9092 with TLS.

Install gck#

go install github.com/gravitee-io-labs/gck@latest

For other installation methods, see Installation .

This context uses DNS for host-based Kafka routing (*.kafka.gck.local). After creating the cluster, run the one-time OS setup so these hostnames resolve on your machine:

gck setup dns

The setup command requires sudo because it writes to system directories: /etc/resolver/ on macOS, and systemd-resolved configuration on Linux. Once done, day-to-day gck create and gck delete commands run without elevated privileges.

See the Networking guide for details.

Usage#

Create#

gck create --from gravitee-io/ee/apim/mongodb

Cleanup#

gck delete

Quick Start#

Sign in to the APIM Console at http://localhost:30080 with the default admin account (admin / admin).

To create your first API, follow the Gravitee APIM quick start guide .

Connecting a Kafka client#

Extract the TLS certificate from the running cluster:

kubectl get secret kafka-tls -n gravitee -o jsonpath='{.data.tls\.crt}' | base64 -d > kafka-tls.crt

Then configure your Kafka client properties:

security.protocol=SSL
ssl.truststore.type=PEM
ssl.truststore.location=/path/to/kafka-tls.crt
ssl.endpoint.identification.algorithm=

The ssl.endpoint.identification.algorithm must be set to empty because the self-signed certificate covers *.kafka.gck.local but broker metadata addresses use two-level subdomains (e.g. broker-0-acr.kafka.gck.local) that don’t match the single-level wildcard.

License#

This is an Enterprise Edition (EE) context. Place your Gravitee license key at $HOME/opt/gravitee/license.key and gck will automatically mount it into the cluster. If the file is missing, the license component is silently skipped (onMissing: ignore).

To use a different path, override it in your gck.yaml:

components:
  - name: license
    k8s:
      secrets:
        - name: gravitee-license
          fromFile: '/custom/path/to/license.key'

Composition chain

This context is composed from the following base contexts:

gravitee-io/ee/apim/mongodb

Endpoints

Services this context exposes on your machine after gck create, including the ones it inherits from the contexts it composes. Rows marked with a flag only exist when you pass it.

ServiceURLNotesFrom
MongoDBlocalhost:30017no authenticationmongodb/standalone
Elasticsearchhttp://localhost:30920security disabledelastic/elasticsearch/standalone
APIM Consolehttp://localhost:30080gravitee-io/oss/apim/base
APIM Portalhttp://localhost:30081gravitee-io/oss/apim/base
APIM Gatewayhttp://localhost:30082gravitee-io/oss/apim/base
APIM Gateway (TLS)https://localhost:30084gravitee-io/oss/apim/base
APIM APIhttp://localhost:30083gravitee-io/oss/apim/base
Kafka Gateway*.kafka.gck.local:9092TLSgravitee-io/ee/apim/base
APIM Bridge APIhttp://localhost:30085needs --enable-bridgegravitee-io/oss/apim/base
Alert Enginews://alert-engine:8072needs --enable-alert-engine in-cluster onlygravitee-io/ee/apim/base

Context flags

Optional flags you can pass to gck create to customize this context:

FlagDescription
--disable-esDisable Elasticsearch and analytics reporters
--disable-portalDisable the developer portal UI
--disable-uiDisable both Console and Portal UIs
--enable-bridgeEnable bridge architecture: management API serves as bridge, gateway syncs through it
--enable-consulDeploy Consul and configure APIM service discovery
--enable-distributed-syncDeploy Redis and enable distributed sync with multiple gateway replicas
--enable-gkoDeploy the Gravitee Kubernetes Operator (GKO) alongside APIM
--enable-hc-vaultDeploy HashiCorp Vault and configure it as a secret provider
--enable-keycloakDeploy Keycloak and configure APIM OIDC security provider
--enable-kibanaDeploy Kibana alongside Elasticsearch
--enable-mailhogDeploy MailHog and configure APIM email settings
--enable-opentelemetry-jaegerDeploy Jaeger and enable OpenTelemetry tracing on the gateway
--enable-otel-collectorExport gateway OpenTelemetry traces to a composed otel-collector
--enable-prometheusDeploy Prometheus and enable APIM metrics
--enable-redisDeploy Redis and use it for gateway rate limiting
--enable-system-proxyDeploy mitmproxy and configure APIM HTTP client proxy
--enable-tagsConfigure gateway with sharding tags (internal/external)
--enable-tcpAdd a TCP protocol listener on the gateway
--enable-tlsEnable TLS termination on the gateway
--disable-kafkaDisable Kafka Gateway and related components
--enable-alert-engineDeploy Alert Engine and wire APIM gateway + management API to send alerts

Variables

Template variables overridable with --set. Use --set path.segments.var=value to target a specific context in the composition chain.

VariableDefaultOriginDescription
clusterNamegraviteegravitee-io/ee/apim/baseName of the Kind cluster
imageRepositoryapache/kafkakafka/standaloneApache Kafka Docker image repository
imageTaglatestkafka/standaloneApache Kafka Docker image tag
imagePrefixgraviteeiogravitee-io/oss/apim/baseDocker image prefix for all APIM components
helmVersion(empty)gravitee-io/oss/apim/baseHelm chart version constraint