Skip to main content
Enterprise

Status & Conditions

The operator maintains a detailed status on each NetBoxEnterprise resource. Use this to monitor cluster health, troubleshoot issues, and integrate with monitoring systems.

Viewing Status

# Summary view
kubectl -n netbox get netboxenterprises -o wide

# Detailed status
kubectl -n netbox describe netboxenterprise netbox

# JSON output for scripting
kubectl -n netbox get netboxenterprise netbox -o jsonpath='{.status}'

Top-Level Status Fields

FieldTypeDescription
readyboolOverall cluster readiness - true only when all components are ready
messagestringHuman-readable summary of the current state
versionstringOperator version managing this cluster
observedGenerationint64The spec generation last processed by the operator
convergedGenerationint64Highest spec generation that has reached all-components-ready. When it equals metadata.generation, the current config rollout has converged and the progress sentinel reports Ready.
lastReconcileTimestringTimestamp of the last successful reconciliation (RFC 3339)
migrationHashstringSHA-256 of migration-relevant inputs (image tag, wheelhouse, and similar). Detects when a migration must re-run.
migrationPhase1HashstringSHA-256 of Phase 1 migration inputs
secretChecksumstringAggregate hash of external secret resourceVersion values. Drives the debounced restart logic.
secretChecksumObservedAtstringRFC 3339 timestamp recording when secretChecksum was last observed

Example:

status:
ready: true
message: "All components ready"
version: "2.1.2"
observedGeneration: 3
convergedGeneration: 3
lastReconcileTime: "2026-06-08T10:30:00Z"

Conditions

Standard Kubernetes conditions on the NetBoxEnterprise resource:

ConditionStatusReasonDescription
ReadyTrueAllComponentsReadyAll components are healthy and serving traffic
ReadyFalseReconcilingA reconcile is in progress; readiness not yet confirmed
ReadyFalseComponentsNotReadyOne or more components still initializing
ReadyFalseReconcileFailedReconciliation encountered an error
ProgressingTrueApplyingResourcesOperator is actively applying resources
ProgressingTrueWaitingForComponentsResources applied, waiting for pods to become ready
ProgressingFalseReconcileCompleteReconciliation finished successfully
DegradedTrueReconcileErrorReconciliation failed - check operator logs

Each condition includes:

FieldTypeDescription
typestringCondition type
statusstringTrue, False, or Unknown
reasonstringMachine-readable reason code
messagestringHuman-readable detail
lastTransitionTimestringWhen the condition last changed
observedGenerationint64Spec generation when set

Inspecting Conditions

# Get conditions as a table
kubectl -n netbox get netboxenterprise netbox -o jsonpath='{range .status.conditions[*]}{.type}{"\t"}{.status}{"\t"}{.reason}{"\t"}{.message}{"\n"}{end}'

Component Status

Each component reports its own health under status.components:

ComponentKeyDescription
NetBox appcomponents.netboxWeb application deployment
NetBox workercomponents.workerBackground task worker
PostgreSQLcomponents.postgresqlDatabase (internal or external)
Rediscomponents.redisCache/queue
Diodecomponents.diodeData ingestion pipeline (if enabled)
Copilotcomponents.copilotCopilot backend (present when Copilot is enabled)

Each component has:

FieldTypeDescription
readyboolWhether the component is ready
messagestringHuman-readable status (e.g., "2/2 replicas ready")
conditions[]ConditionComponent-specific conditions

Component conditions carry their own reason codes:

ReasonCondition / StatusDescription
ComponentReadyReady / TrueThe component is healthy and serving
ProgressingProgressing / TrueThe component is starting or rolling out
NotReadyReady / FalseThe component is not yet ready
UnknownReady / FalseComponent health could not be determined (for example, PostgreSQL or Redis status was unavailable)

A component that fails also sets Degraded / True with a component-specific reason and the failure detail in message.

Inspecting Component Health

# All component statuses (components is an object keyed by component name)
kubectl -n netbox get netboxenterprise netbox \
-o jsonpath='{.status.components}' | jq
# Specific component
kubectl -n netbox get netboxenterprise netbox \
-o jsonpath='{.status.components.postgresql}'

License Information

License details are surfaced in status.license:

FieldTypeDescription
tierenumCommunity, Starter, Professional, Premium
editionenumCommunity, Enterprise
licenseIdstringUnique license identifier
licenseTypestringLicense type (dev, trial, prod, paid)
customerNamestringCustomer name
customerEmailstringCustomer email
channelNamestringChannel (stable, beta, dev)
isAssuranceEntitledboolWhether NetBox Assurance features are available
isCopilotEntitledboolWhether Private Copilot is entitled by the license (defaults false)
platformOrgIdstringPlatform organization ID from the license
entitlementsmapRaw entitlements map keyed by entitlement name. Each entry has a title (string) and a value (any JSON type). Used for additional checks.
expiresAtstringExpiration date (ISO 8601)
kubectl -n netbox get netboxenterprise netbox -o jsonpath='{.status.license}'

Generation Tracking

The operator tracks observedGeneration to detect configuration drift:

  • metadata.generation: Incremented by Kubernetes when spec changes
  • status.observedGeneration: Set by the operator after processing a generation

If observedGeneration < metadata.generation, the operator has not yet processed the latest spec change.

# Check for pending changes
kubectl -n netbox get netboxenterprise netbox \
-o jsonpath='gen={.metadata.generation} observed={.status.observedGeneration}'

Reconciliation Events

The operator publishes Kubernetes events for each reconciliation:

# All operator events
kubectl -n netbox get events --field-selector source=nbe-operator

# Watch events in real time
kubectl -n netbox get events -w --field-selector source=nbe-operator

Event types include:

  • Normal: Resource applied successfully, reconciliation complete
  • Warning: Readiness check failed, reconciliation error

See Also

Related Topics