Skip to main content
Enterprise

Diode Configuration

Diode provides automated data ingestion into NetBox. It consists of four components:

  • Reconciler — Processes change sets and updates NetBox via API
  • Ingester — Receives incoming data and writes to Redis streams
  • Auth — Authentication service for Diode API clients
  • Hydra — Ory Hydra OAuth2/OIDC server for token management

Enable/Disable Diode

KeyTypeDefaultDescription
diode.enabledbooltrueEnable the entire Diode stack
netboxEnterprise:
spec:
diode:
enabled: false # Disable Diode entirely

When disabled, the reconciler, ingester, auth, and Hydra components are not deployed.

Component Configuration

Each component has the same configuration structure for scaling and resources:

Reconciler

KeyTypeDefaultDescription
diode.reconciler.replicasuint81Number of reconciler replicas
diode.reconciler.resources.cpuint100CPU request (millicores)
diode.reconciler.resources.memoryint256Memory request (MiB)
diode.reconciler.limits.cpuint500CPU limit (millicores)
diode.reconciler.limits.memoryint512Memory limit (MiB)

Ingester

KeyTypeDefaultDescription
diode.ingester.replicasuint81Number of ingester replicas
diode.ingester.resources.cpuint100CPU request (millicores)
diode.ingester.resources.memoryint256Memory request (MiB)
diode.ingester.limits.cpuint500CPU limit (millicores)
diode.ingester.limits.memoryint512Memory limit (MiB)

Auth

KeyTypeDefaultDescription
diode.auth.replicasuint81Number of auth replicas
diode.auth.resources.cpuint50CPU request (millicores)
diode.auth.resources.memoryint128Memory request (MiB)
diode.auth.limits.cpuint200CPU limit (millicores)
diode.auth.limits.memoryint256Memory limit (MiB)

Hydra (OAuth2/OIDC)

KeyTypeDefaultDescription
diode.hydra.replicasuint81Number of Hydra replicas
diode.hydra.autoMigratebooltrueRun database migrations on startup
diode.hydra.resources.cpuint100CPU request (millicores)
diode.hydra.resources.memoryint256Memory request (MiB)
diode.hydra.limits.cpuint500CPU limit (millicores)
diode.hydra.limits.memoryint512Memory limit (MiB)

Hydra secrets (cookie, DSN, system) are auto-generated from the PostgreSQL configuration if not explicitly set.

Application Config

Reconciler Config

KeyTypeDefaultDescription
diode.config.reconciler.autoApplyChangesetsboolfalseAutomatically apply change sets to NetBox
diode.config.reconciler.logLevelenumINFOLog level: INFO, DEBUG, WARN, ERROR
diode.config.reconciler.databaseNamestringdiodePostgreSQL database name
diode.config.reconciler.databaseUserstringdiodePostgreSQL database user
diode.config.reconciler.migrationEnabledbooltrueRun database migrations
diode.config.reconciler.redisDbuint80Redis database number
diode.config.reconciler.redisStreamDbuint81Redis database for streams
diode.config.reconciler.rateLimitRpsuint820Rate limit (requests/sec)
diode.config.reconciler.rateLimitBurstuint81Rate limit burst size
diode.config.reconciler.rateLimitNetboxRpsuint820NetBox API rate limit
diode.config.reconciler.rateLimitNetboxBurstuint81NetBox API burst size

Auth Config

KeyTypeDefaultDescription
diode.config.auth.logLevelenumINFOLog level

Ingester Config

KeyTypeDefaultDescription
diode.config.ingester.logLevelenumINFOLog level
diode.config.ingester.redisStreamDbuint81Redis database for stream storage

Telemetry Config

Each component supports telemetry configuration:

KeyTypeDefaultDescription
telemetryConfig.environmentstringEnvironment name (Diode uses its own default if not set)
telemetryConfig.metricsEnabledboolfalseEnable Prometheus metrics
telemetryConfig.metricsExporterenumprometheusExporter: prometheus, otlp, console, none
telemetryConfig.metricsPortuint16Metrics endpoint port
telemetryConfig.traceExporterenumnoneTrace exporter: otlp, console, none

Example enabling metrics for all Diode components:

netboxEnterprise:
spec:
diode:
enabled: true
config:
ingester:
telemetryConfig:
metricsEnabled: true
reconciler:
telemetryConfig:
metricsEnabled: true
autoApplyChangesets: true
auth:
telemetryConfig:
metricsEnabled: true

Data Flow

  1. External agents send data to the Ingester via gRPC
  2. The Ingester writes to Redis Streams for durable queuing
  3. The Reconciler reads from streams, processes change sets, and pushes to NetBox via its API
  4. Auth handles API key validation with Hydra providing OAuth2 token management

Next Steps