Konnektr Logo
Deployment & Installation

Deployment Topologies

Compare the ways to run Konnektr Graph on your own infrastructure — bundled database or external PostgreSQL, single instance or HA.

Konnektr Graph is always self-hosted. The choice is not whether to manage infrastructure, but how much of it one Helm chart should own.

Quick recommendation

  • Evaluating or single-team use → chart-managed PostgreSQL (cluster.enabled=true), one instance, API enabled, Events disabled.
  • Production, one database for several services → external PostgreSQL (cluster.enabled=false), chart manages only the API and Events.
  • High availability → 3-instance CloudNativePG cluster across zones, 2+ API replicas.

Bundled vs external database

Chart-managed cluster (cluster.enabled=true)External PostgreSQL (cluster.enabled=false)
Who runs PostgreSQLCloudNativePG operator, via this chartYou
Upgradeshelm upgrade (operator rolls pods)Your DBA process
BackupsConfigure CNPG object storageYour existing tooling
Extension installAGE + pgvector from the chart's image catalogYou install and create AGE/pgvector per database
Multiple apps on one databaseAwkward — the chart owns the clusterNatural
Best forGetting started, single-purpose clustersPlatforms with an existing database estate

Requirements when bringing your own database: PostgreSQL 16/17/18, the Apache AGE extension available, and a role allowed to create the graph and its label tables.

Single instance vs high availability

Single instanceHA
Instancescluster.cluster.instances: 13 (odd, across zones)
Read-only servicenone — keep api.database.readOnlyHost: auto-ro service backed by replicas
Failoverpod restartautomatic leader election
PodDisruptionBudgetset enablePDB: false (a single instance can never satisfy minAvailable: 1, which blocks every drain)leave enabled
API replicas12+ behind the Service

What the chart deploys

ComponentValues keyDefaultNotes
APIapi.enabledfalseHTTP surface, /digitaltwins, /entities, /query
Eventsevents.enabledfalseConsumes the WAL stream, publishes to Kafka/ADX/MQTT
PostgreSQLcluster.enabledfalseCloudNativePG Cluster with AGE
Ingressapi.ingress.enabledfalseClassic Ingress
HTTPRouteapi.httproute.enabledfalseGateway API

Both api.enabled and cluster.enabled default to false, so a bare helm install creates nothing — that is deliberate, and the reason the quickstart sets them explicitly.

Access paths

PathRequiresUse when
REST APIapi.enabled + a token (or auth disabled)ADT SDKs, graph-explorer, anything over HTTP
/entities/* aliassame as RESTYour domain has no digital-twin vocabulary
Native Konnektr.AgeDigitalTwins SDKnetwork access to PostgreSQLBulk loads, direct Cypher, transactions

See Using the Azure Digital Twins SDKs and the native SDK reference.

Migration between topologies

Moving from a chart-managed cluster to external PostgreSQL, or between clusters, is a database move:

  1. Export models and twins through the API or the native SDK.
  2. Provision the target PostgreSQL with AGE (and pgvector if used).
  3. Import: models first, then twins, then relationships.
  4. Repoint api at the new database and restart.

Keep events disabled during the move, or the stream will announce changes your target does not have yet.

On this page