Skip to main content
The NOFire AI Edge collects Kubernetes cluster resources and external dependencies data. Install it using the provided Helm chart.

Prerequisites

Required Components

  • Kubernetes: Version 1.19+
  • Helm: Version 3.0+
  • kubectl: Configured cluster access
  • NOFire API Key: Generated from NOFire UI

Operational Modes

  • Provider-Enabled: Identifies services and dependencies (Datadog integration)
  • Providerless: Identifies services only (no dependency mapping)

Resource Requirements

  • CPU: 100m request (200m limit recommended)
  • Memory: 128Mi request (256Mi limit recommended)
  • Network: Outbound HTTPS for API calls, inbound HTTP on port 8080

Permissions

  • Read access to pods, nodes, services, configmaps, secrets
  • List/watch permissions for resource discovery

Installation

Step 1: Generate API Token

Navigate to the API Tokens screen

Provide a meaningful name and create the API Key

Provide a descriptive name for the key and click Create.API Key Name

Copy the API Key token

Copy the generated API token. This token will not be shown again.API Key Token

Step 2: Add Helm Repository

helm repo add nofireai-edge https://github.com/NOFireAI/edge-helm-chart

Step 3: Create Configuration

Create custom-values.yaml with your API token:
config:
  enablePublishing: true
  publisher:
    apiKey: "<your-api-key>"

Step 4: Install

helm install nofireai-edge ./chart -f custom-values.yaml --namespace nofire-ai --create-namespace

Uninstall

helm uninstall nofire-edge

Configuration Reference

The complete configuration reference is provided in the table below.
ParameterTypeDefaultDescription
Chart Parameters
image.repositorystrTODOContainer image repository. Change it only if you have pulled the image to your own Docker repository
image.tagstrlatestContainer image tag
replicaCountint1Number of replicas
Basic Configuration
config.logLevelstrinfoLogging level (debug, info, warn, error)
config.serverPortint8080Server port for HTTP API
config.maxWorkersint4Maximum number of worker goroutines
config.processIntervalstr100msInterval between processing cycles
Graph Configuration
config.graph.pruneIntervalstr1hHow often to prune old graph data
config.graph.maxPruneAgestr24hMaximum age of graph data to keep
Kubernetes Configuration
config.kube.resyncIntervalstr5mHow often to resync with Kubernetes API
config.kube.clusterNamestrdefault-clusterName of the cluster
config.kube.resourcesarray[pods, nodes, ...]List of Kubernetes resources to monitor
Services Configuration
config.services.nameLabelsarrayotel labelsLabels to check for service name identification
config.services.versionLabelsarrayotel labelsLabels to check for service version identification
config.services.providerobjnullOptional observability solution for service dependency determination. Set to null to disable dependency analysis. Currently supports Datadog, with additional observability solutions planned for future releases
config.services.provider.datadog.apiKeystr""Datadog API key
config.services.provider.datadog.appKeystr""Datadog application key
config.services.provider.datadog.urlstr""Datadog API URL
config.services.provider.datadog.intervalstr""Datadog sync interval
config.services.provider.datadog.timeoutstr""Datadog request timeout
config.services.provider.datadog.envstr""Datadog environment
Publisher Configuration
config.enablePublishingboolfalseEnable data publishing
config.publisher.apiKeystr""API key for publishing (REQUIRED)
config.publisher.timeoutstr5mRequest timeout
config.publisher.maxRetriesint3Maximum retry attempts
config.publisher.retryDelaystr1mDelay between retries
config.publisher.enableCompressionboolfalseEnable request compression
config.publisher.graph.urlstr""Graph publishing URL (REQUIRED)
config.publisher.graph.intervalstr1hGraph publishing interval
config.publisher.heartbeat.urlstr""Heartbeat publishing URL (REQUIRED)
config.publisher.heartbeat.intervalstr1hHeartbeat publishing interval

Environment Variable Substitution

The NOFire AI edge supports environment variable substitution using the format {ENV_VAR_NAME}. This feature is only available for configuring the Datadog provider. It enables secure configuration management by allowing sensitive Datadog credentials to be stored as environment variables (e.g., within Kubernetes Secrets) rather than in plain text configuration files. Below you can find an example. Replace Datadog credentials with environment variable placeholders in your custom-values.yaml:
config:
  services:
    provider:
      datadog:
        apiKey: "{DATADOG_API_KEY}"      
        appKey: "{DATADOG_APP_KEY}"      
        url: "{DATADOG_URL}"             
        env: "{ENVIRONMENT}"

API Endpoints

The edge client exposes HTTP endpoints for debugging and diagnostics.
EndpointDescription
/graphFull resource graph (JSON)
/graph/dotGraph in DOT format
/graph/statsGraph statistics
/metricsPrometheus metrics
/healthzHealth check

Troubleshooting

Common Issues

ServiceMonitor CRD Not Found
# Disable ServiceMonitor if Prometheus Operator not installed
helm upgrade nofire-edge ./chart --set monitoring.serviceMonitor.enabled=false
RBAC Permissions
kubectl logs deployment/nofire-edge
# Check for permission denied errors
Publishing Failures
# Check configuration
kubectl get configmap nofire-edge-config -o yaml

# Verify API key
kubectl logs deployment/nofire-edge | grep "publisher"
Resource Discovery
# Check monitored resources
curl http://localhost:8080/graph/stats

Debug Mode

Enable verbose logging:
config:
  logLevel: "debug"