Finout EKS Kubernetes Agent
The Finout EKS Kubernetes Agent collects the workload metrics Finout needs for Kubernetes cost allocation, without requiring an existing monitoring system.
Availability: Generally available for EKS.
The agent runs inside your cluster, queries native Kubernetes APIs, and deploys its own kube-state-metrics exporter. It uploads metric files to Finout over HTTPS using S3 presigned URLs. No additional monitoring infrastructure required. Cluster access is scoped to least-privilege RBAC, provisioned automatically by the Helm chart.
How it works
The Finout EKS Kubernetes Agent is deployed via Helm and runs as three components in a dedicated namespace:
kube-state-metrics (Deployment) exposes cluster-wide Kubernetes metadata — workload ownership, labels, and resource requests — as Prometheus metrics.
Node Otel Collector (DaemonSet) runs on every node in the cluster. It scrapes node-local cAdvisor metrics via the kubelet endpoint and forwards usage telemetry to the Central Collector over gRPC (OTLP).
Central Collector (Deployment) receives usage metrics from the Node Collectors, scrapes kube-state-metrics, and stages all metrics on disk. A sidecar uploader generates compressed metric files periodically and uploads them to Finout's S3 bucket using presigned URLs fetched from the Finout API.

The agent does not modify, block, or mutate any workloads running in your cluster.
What metrics are collected
The Finout EKS Kubernetes Agent collects only the metrics required for Kubernetes cost allocation from two standard sources:
cAdvisor (via kubelet):
container_cpu_usage_seconds_totalcontainer_memory_working_set_bytescontainer_network_receive_bytes_totalcontainer_network_transmit_bytes_total
kube-state-metrics:
kube_pod_container_resource_requestskube_pod_init_container_resource_requestskube_node_status_capacitykube_node_infokube_pod_infokube_pod_labelskube_namespace_labelskube_node_labelskube_replicaset_owner,kube_job_owner
Security model
The Finout Kubernetes Agent operates under a least-privilege model.
RBAC: The Helm chart provisions two ServiceAccounts.
The Node Collector is bound to a ClusterRole with a single rule:
getonnodes/metrics, enabling kubelet/cAdvisor scraping.The Central Collector has no ClusterRole and communicates exclusively with in-namespace services.
kube-state-metrics runs under its own dedicated ServiceAccount with read-only permissions (
listandwatch) scoped to pods, nodes, namespaces, ReplicaSets, and jobs.
Pod security: All containers run as non-root (UID 10001 / GID 2000).
allowPrivilegeEscalationis disabled, all capabilities are dropped, and the Node Collector runs with a read-only root filesystem. There is nohostNetwork,hostPID, privileged mode, orhostPathmount.Network: The agent requires outbound HTTPS only — no inbound ports are opened. Egress is to two destinations:
app.finout.io— to fetch presigned S3 upload URLsAWS S3 — to upload metric files
Upload credentials are short-lived presigned URLs, not static API keys. Each URL is scoped to a single upload operation and expires automatically.
Storage
The Central Collector uses a single ReadWriteOnce PersistentVolumeClaim (default: 10 GiB) as a durable staging area for metric files.
A default StorageClass must be available in the cluster, or you can specify one at install time.
Rotated metric files on the PVC survive pod restarts, rescheduling, and node failures. Once a file is uploaded successfully, it is removed from the PVC.
Lifecycle management
The agent follows standard Helm lifecycle practices. You can pin, upgrade, or roll back to specific versions using standard helm upgrade and helm rollback commands.
Next steps
Install the Finout Kubernetes Agent - step-by-step installation guide.
Last updated
Was this helpful?