Prerequisites
- Kubernetes v1.20+
- Helm v3+
- Administrator access to the cluster (for RBAC and CoreDNS patching)
- Outbound HTTPS access to NOFire AI
1. Helm Installation
The recommended way to install the agent is via Helm.Add Repository
Step 1: Initial Installation
First, install the Edge Agent to get an auto-assigned ClusterIP:Step 2: Get the ClusterIP
Retrieve the auto-assigned ClusterIP:10.96.145.200).
Step 3: Reinstall with Static IP (Recommended)
[!IMPORTANT] Why Static IP? Setting a static ClusterIP ensures the service IP doesn’t change during upgrades or reinstalls. This is critical for CoreDNS configuration stability. By using the auto-assigned IP from Step 2 as your static IP, you avoid conflicts. Kubernetes allocates IPs dynamically from the upper range, while static IPs should use the lower range. Learn more about ClusterIP allocation strategy.Uninstall the initial deployment:
<CLUSTER_IP_FROM_STEP_2> with the ClusterIP you copied.
Alternatively, using a values file:
2. DNSTap Configuration (Critical)
To discover service-to-service dependencies, the Edge Agent must receive DNS logs from CoreDNS via the DNSTap protocol.[!IMPORTANT] Without DNSTap, the agent will only see static resources and will not show runtime dependencies.
Step 1: Verify Edge Service ClusterIP
Confirm your Edge service ClusterIP (from installation Step 2):Step 2: Patch CoreDNS
You need to add thednstap plugin configuration to your CoreDNS ConfigMap.
-
Obtain the current CoreDNS ConfigMap:
-
Update the ConfigMap:
Open
coredns.yamland locate theCorefilesection. Insert thednstapconfiguration line inside the main server block (.:53).[!WARNING] Replace
NOFIRE_EDGE_IPwith the actual ClusterIP from Step 1 (e.g.,10.96.145.200). -
Apply the updated ConfigMap:
-
Restart CoreDNS:
Step 3: Verify Connection
Check the Edge Agent logs to confirm it is receiving DNSTap traffic:3. Publisher Configuration
The Publisher sends the discovered graph to NOFire AI.- API Key: Must be set via
publisher.apiKey. For security, consider using a Kubernetes Secret and referencing it in the Helm chart. - Intervals:
publisher.graph.interval: Defaults to1h. Controls how often the full graph is synced.
Troubleshooting
- No dependencies showing up? Check CoreDNS logs (
kubectl logs -n kube-system -l k8s-app=kube-dns) for connection errors to the Edge Agent. - Permission errors? Ensure the
nofire-edgeServiceAccount has the necessary RBAC permissions (ClusterRole).