2.0.x). It is a drop-in replacement for earlier agents - the same Helm chart, values, install command, and behaviour - with a smaller memory and CPU footprint and faster startup. Existing clusters are upgraded automatically by the platform; there is nothing to change in your install command.
The agent requires cluster-admin permissions to manage all Kubernetes resources and deploy add-ons.
What the Agent Does
Real-time Resource Streaming
Browse Deployments, Pods, Services, and 20+ resource types with live updates.
Pod Log Streaming
View container logs in real-time directly from the Ankra dashboard.
Helm Management
Deploy, upgrade, and manage Helm releases across your cluster, including history and rollback.
Add-on Deployment
Install stacks and add-ons using the native Helm engine (default) or ArgoCD. See Deployment Engines.
kubectl Access
Proxy authenticated
kubectl requests to the cluster API server - no inbound ports. See Accessing Clusters with kubectl.Fleet Map Reporting
Optionally report the cluster’s public egress IP so it appears on the Dashboard world map.
Installation
When you import a cluster, Ankra generates a Helm install command with a unique token:Verify Installation
Check the agent is running:Configuration Reference
Required Settings
| Parameter | Description |
|---|---|
config.token | Authentication token (provided during cluster import) |
config.ankra_url | Platform URL (default: https://platform.ankra.app) |
Using an Existing Secret
For production environments, store the token in a Kubernetes secret:Performance Tuning
For large clusters (1000+ resources), adjust these settings:| Parameter | Default | Description |
|---|---|---|
nats_worker_max_workers | 15 | Worker threads for command processing |
read_worker_count | 5 | Concurrent worker slots for read jobs |
write_worker_count | 5 | Concurrent worker slots for write jobs (create/update/delete) |
resources.limits.memory | 512Mi | Memory limit |
resources.requests.memory | 256Mi | Memory request |
replica_count | 1 | Number of agent replicas |
Fleet world map (public IP reporting)
To place an imported cluster on the Dashboard world map when it has no recognisable cloud region, let the agent report its public egress IP on check-in:public_ip.lookup_url, default https://api.ipify.org) and reports the result. Leave it disabled (the default) for air-gapped clusters or where egress IP lookups are undesirable.
All Helm Values
| Parameter | Default | Description |
|---|---|---|
config.ankra_url | https://platform.ankra.app | Platform API URL |
config.token | "" | Agent authentication token |
config.existing_secret_name | "" | Name of existing K8s secret |
config.secret_key | "" | Key in existing secret containing token |
log_level | INFO | Log level (DEBUG, INFO, WARNING, ERROR, CRITICAL) |
nats_worker_max_workers | 15 | NATS worker threads |
read_worker_count | 5 | Concurrent read job slots |
write_worker_count | 5 | Concurrent write job slots |
replica_count | 1 | Number of agent pods |
terminationGracePeriodSeconds | 600 | Graceful shutdown timeout |
resources.limits.memory | 512Mi | Memory limit |
resources.requests.memory | 256Mi | Memory request |
resources.requests.cpu | 200m | CPU request |
public_ip.reporting_enabled | false | Report public egress IP for the Fleet world map |
public_ip.lookup_url | https://api.ipify.org?format=json | Endpoint used to discover the public IP |
public_ip.refresh_seconds | 3600 | How often the cached public IP is refreshed |
public_ip.lookup_timeout_seconds | 5 | Per-lookup HTTP timeout |
k8s_watch.enabled | true | Stream live resource updates via the Kubernetes watch |
metrics.serviceMonitor.enabled | false | Install a Prometheus Operator ServiceMonitor scraping /metrics |
extra_env | [] | Extra environment variables for advanced tuning (see below) |
The agent runs as a non-root container by default (
runAsNonRoot: true, UID/GID 1000, readOnlyRootFilesystem: true, all Linux capabilities dropped, seccompProfile: RuntimeDefault). Because the root filesystem is read-only, the chart mounts writable emptyDir volumes for /tmp, ~/.cache, and ~/.config via writable_volumes.enabled (default true). Don’t lower these security settings unless you are running a custom image.Advanced tuning via extra_env
Less-common knobs are set as environment variables through extra_env:
| Env var | Default | Description |
|---|---|---|
KUBERNETES_HTTP2_ENABLED | false | Enable HTTP/2 to the API server (only if the path supports it cleanly) |
KUBERNETES_REQUEST_MAX_ATTEMPTS | 3 | List/get retry attempts on connection-terminated errors |
KUBE_PROXY_UNARY_CONCURRENCY | 64 | Max concurrent unary requests through the kubectl proxy |
KUBE_PROXY_STREAM_CONCURRENCY | 128 | Max concurrent streaming connections (watch/logs/exec) through the proxy |
DYNAMIC_API_DISCOVERY_ENABLED | false | Discover and watch additional API groups dynamically |
RECONCILE_AUTO_HEAL_ENABLED | true | Auto-heal native-engine releases stuck mid-operation |
FORWARD_SERVICE_REQUEST_MAX_TIMEOUT_SECONDS | 120 | Upper bound for platform-requested forwarded-request timeouts (e.g. Prometheus) |
Architecture
The agent uses a NATS-based architecture for real-time communication: Key features:- Outbound connections only - The agent initiates all connections, no inbound ports required
- Real-time streaming - Resource data streams efficiently using pagination
- Automatic reconnection - Handles network interruptions gracefully
- kubectl proxy - Forwards authenticated
kubectlrequests (includingwatch,logs -f, andexec) from the platform to the cluster API server, so you can reach private clusters without inbound access. See Accessing Clusters with kubectl. - Health monitoring - Exposes
/livezand/readyzendpoints on port 8080
Network Requirements
The agent requires outbound connectivity to:| Endpoint | Port | Purpose |
|---|---|---|
platform.ankra.app | 443 | API communication |
connect.ngs.global | 4222 | NATS real-time streaming |
Upgrading the Agent
New agent releases are published on the2.0.x version track. The platform rolls the fleet forward automatically to the latest published version, a few clusters at a time, so most clusters stay current without any action. You can still trigger an upgrade yourself at any time.
From the Platform
Click Upgrade Agent in the cluster settings. The agent will self-upgrade using Helm.Manually
Troubleshooting
Agent Not Connecting
-
Check agent pods are running:
-
View agent logs:
-
Verify network connectivity:
-
Check the token is set:
Common Issues
| Issue | Cause | Solution |
|---|---|---|
| Cluster shows Offline | Agent not running or network blocked | Check pods and firewall rules |
| Token invalid | Token expired or revoked | Go to Clusters → Your Cluster → Settings → Generate Command to get a new install command |
| Connection refused | Outbound network blocked | Allow connections to platform.ankra.app:443 |
| Resources not loading | Agent memory limits too low | Increase resources.limits.memory |
Health Checks
The agent exposes health endpoints:Uninstalling
To remove the agent from your cluster:Security
RBAC Requirements
The agent requires cluster-admin permissions to:- Browse all Kubernetes resources
- Deploy Helm charts and manifests
- Manage add-ons via the native Helm engine or ArgoCD
- Stream pod logs and proxy authenticated
kubectlrequests
ClusterRoleBinding with the necessary permissions.
Token Security
- Tokens are unique per cluster
- Tokens can be revoked by deleting the cluster from Ankra
- Store tokens in Kubernetes secrets (not in Helm values) for production