Prerequisites
- Kubernetes v1.20+
- Helm v3+
- Administrator access to the cluster (for RBAC and CoreDNS patching)
- Outbound HTTPS access to NOFire AI
- NOFire API Key from your dashboard
- (Optional) Prometheus Operator for ServiceMonitor support
1. Helm Install
Add the Helm Repository
Step 1: Initial Install
Step 2: Get the ClusterIP
Copy the ClusterIP from the output (e.g., 10.96.145.200).
Step 3: Reinstall with Static IP
Setting a static ClusterIP ensures the service IP does not change during upgrades or reinstalls. This is critical for CoreDNS configuration stability.Use the auto-assigned IP from Step 2 as your static IP to avoid conflicts. Learn more about ClusterIP allocation strategy.
Alternatively, using a values file:
2. DNSTap Configuration
Without DNSTap, Edge will only see static resources and will not show runtime service dependencies.
Step 1: Confirm the ClusterIP
Step 2: Patch CoreDNS
Get the current CoreDNS ConfigMap:
Open coredns.yaml and insert the dnstap line inside the .:53 block:
Replace NOFIRE_EDGE_IP with the ClusterIP from Step 1.
Apply and restart CoreDNS:
Step 3: Verify DNSTap Connection
Check the Edge logs for connection and handshake messages:
You should see, in order:
"New DNS Tap connection accepted" — CoreDNS connected
"Handshake successful, ready to receive frames" — protocol handshake completed
"Received data frame" — DNS tap data is flowing
To verify dependencies are being detected:
If no connection logs appear, CoreDNS is not reaching Edge. Check:
- The
dnstap line in the CoreDNS ConfigMap uses the correct Edge ClusterIP
- CoreDNS was restarted after the ConfigMap change
- CoreDNS logs for dropped dnstap messages:
kubectl logs -l k8s-app=kube-dns -n kube-system | grep -i drop
3. Verify Edge Is Running
Look for Graph published successfully in the logs.
4. Network Observability (Optional)
Beyond the DNS-derived dependency map, Edge can map the real service-to-service calls in your cluster by reading an observability stack you already run (Hubble, Istio, or Caretta). It is disabled by default.
See Network Observability to enable it and compare what each backend surfaces.
5. Edge Proxy (Optional)
If your observability backends are behind a firewall, the Edge Proxy gives NOFire direct access to them on demand. No VPN or inbound firewall rules required.
Step 1: Create a Connector Secret
Step 2: Add to values.yaml
The proxy pod is created automatically when onPremConnections is defined.
Step 3: Upgrade
Step 4: Verify the Proxy
Expected: Stream connected and handshake complete
See On-Prem Connections to add more data sources.
Troubleshooting
- No dependencies showing up. Check CoreDNS logs:
kubectl logs -n kube-system -l k8s-app=kube-dns. Verify the DNSTap line uses the correct Edge ClusterIP and that CoreDNS was restarted.
- Permission errors. Ensure the
nofire-edge ServiceAccount has the necessary RBAC permissions (ClusterRole).
- Graph not publishing. Verify the API key is correct and outbound HTTPS to NOFire AI is allowed.