Below are the major components deployed with the Kubecost Helm chart, excluding certain Enterprise components such as durable storage:
Kubecost Cost-Analyzer Pod
Frontend: Runs Nginx and handles routing to Kubecost backend and Prometheus/Grafana
Cost-model: Provides cost allocation calculations and metrics, both reads and writes to Prometheus
Prometheus
Prometheus server: Time-series data store for cost and health metrics
Kube-state-metrics (optional): Provides Kubernetes API metrics, e.g. resource requests
Node-exporter (optional): Provides metrics for reserved instance recommendations, various Kubecost Grafana dashboards, and cluster health alerts
Pushgateway (optional): Provides the ability for users to push new metrics to Prometheus
Alertmanager (optional): Used for custom alerts
Network costs (optional): used for determining network egress costs. See our Network Traffic Cost Allocation doc for more information.
Grafana (optional): Provides supporting dashboards for Kubecost product
Today, the core Kubecost product can be run with just components 1 and 2.1. See an overview of core components in this diagram:
Kubecost interacts with provider pricing in a few different ways:
onDemand Rates (AWS, Azure, GCP, and Custom Pricing CSV)
Negotiated Rates (Azure, GCP, and Custom Pricing CSV)
Spot Data Feed (AWS)
In an Enterprise federated setup, only the Primary Kubecost Cluster needs access to the Cloud Provider Billing.
The most common implementation of durable storage in the Kubecost application is with Thanos. Below is a high-level reference for the required components. More information on each Thanos component can be found here.