OTTO Fleet Manager: System tab shows "No Data" for charts and installed packages
Applies to: OTTO Fleet Manager (OTTO by Rockwell Automation / Clearpath), single- or multi-node, online or airgapped. Confirmed on software bundle 2.34.x.
Symptom
In System Configuration → System (https://<hostname>/config/), both Available charts and Installed software packages show "No Data", even though the installer completed without errors and the portal loads. Often the portal is reachable only by IP address, not by hostname.
Cause
The Configuration Management Portal back end (otto-srv-web-config) builds the chart list by running helm list against the Kubernetes API server. Its kubeconfig addresses the API server by node hostname (e.g., https://esefm:6443). If cluster DNS (CoreDNS) can't resolve that hostname, the query fails and the panel renders empty:
Kubernetes cluster unreachable: Get "https://esefm:6443/version":
dial tcp: lookup esefm on 10.96.0.10:53: server misbehaving
The local Helm chart repository is fine — only the live cluster query fails. The same unresolved hostname is also why the portal is reachable only by IP.
Confirm the cause
SSH into the node (the DB node on multi-node) and check the back-end log:
kubectl -n fleet-manager logs deploy/otto-srv-web-config --tail=100 | grep -iE "unreachable|lookup"
A Kubernetes cluster unreachable ... lookup <hostname> ... server misbehaving line confirms it.
Resolution
Make the node hostname resolve to the node's IP. Use either option.
Option A — Add a DNS record (recommended)
On your DNS server, add an A record mapping the node hostname to its IP (e.g., esefm → 10.6.10.6). This also restores portal access by hostname. Then refresh CoreDNS:
kubectl -n kube-system rollout restart deployment coredns
Option B — Pin the hostname in CoreDNS (no upstream DNS dependency)
kubectl -n kube-system edit configmap coredns
Inside the .:53 { ... } block, just above the forward line, add (substitute your IP, hostname, and FQDN):
hosts {
10.6.10.6 esefm esefm.clearpath.ai
fallthrough
}
Save, then restart CoreDNS and the back end:
kubectl -n kube-system rollout restart deployment coredns
kubectl -n fleet-manager rollout restart deployment otto-srv-web-config
Verify
kubectl -n fleet-manager logs deploy/otto-srv-web-config --tail=30 | grep -iE "unreachable|lookup"
The error should be gone. Reload https://<hostname>/config/ → System; the charts now list. Update the Configuration Management Portal first, then click Install Missing.
Notes
A 127.0.1.1 <hostname> line in the node's /etc/hosts is normal Ubuntu behavior and does not fix this — CoreDNS does not read the node's hosts file, so the fix must live in DNS or the CoreDNS config.
If, after the hostname resolves, you get a TLS/certificate error for it, the API server certificate needs the hostname added as a SAN (separate fix).
In System Configuration → System (https://<hostname>/config/), both Available charts and Installed software packages show "No Data", even though the installer completed without errors and the portal loads. Often the portal is reachable only by IP address, not by hostname.
Cause
The Configuration Management Portal back end (otto-srv-web-config) builds the chart list by running helm list against the Kubernetes API server. Its kubeconfig addresses the API server by node hostname (e.g., https://esefm:6443). If cluster DNS (CoreDNS) can't resolve that hostname, the query fails and the panel renders empty:
Kubernetes cluster unreachable: Get "https://esefm:6443/version":
dial tcp: lookup esefm on 10.96.0.10:53: server misbehaving
The local Helm chart repository is fine — only the live cluster query fails. The same unresolved hostname is also why the portal is reachable only by IP.
Confirm the cause
SSH into the node (the DB node on multi-node) and check the back-end log:
kubectl -n fleet-manager logs deploy/otto-srv-web-config --tail=100 | grep -iE "unreachable|lookup"
A Kubernetes cluster unreachable ... lookup <hostname> ... server misbehaving line confirms it.
Resolution
Make the node hostname resolve to the node's IP. Use either option.
Option A — Add a DNS record (recommended)
On your DNS server, add an A record mapping the node hostname to its IP (e.g., esefm → 10.6.10.6). This also restores portal access by hostname. Then refresh CoreDNS:
kubectl -n kube-system rollout restart deployment coredns
Option B — Pin the hostname in CoreDNS (no upstream DNS dependency)
kubectl -n kube-system edit configmap coredns
Inside the .:53 { ... } block, just above the forward line, add (substitute your IP, hostname, and FQDN):
hosts {
10.6.10.6 esefm esefm.clearpath.ai
fallthrough
}
Save, then restart CoreDNS and the back end:
kubectl -n kube-system rollout restart deployment coredns
kubectl -n fleet-manager rollout restart deployment otto-srv-web-config
Verify
kubectl -n fleet-manager logs deploy/otto-srv-web-config --tail=30 | grep -iE "unreachable|lookup"
The error should be gone. Reload https://<hostname>/config/ → System; the charts now list. Update the Configuration Management Portal first, then click Install Missing.
Notes
A 127.0.1.1 <hostname> line in the node's /etc/hosts is normal Ubuntu behavior and does not fix this — CoreDNS does not read the node's hosts file, so the fix must live in DNS or the CoreDNS config.
If, after the hostname resolves, you get a TLS/certificate error for it, the API server certificate needs the hostname added as a SAN (separate fix).