Cross-cloud cost allocation models for Kubernetes workloads https://kubecost.com
|
|
1 kuukausi sitten | |
|---|---|---|
| .github | 1 kuukausi sitten | |
| .idea | 3 vuotta sitten | |
| cmd | 3 vuotta sitten | |
| configs | 2 kuukautta sitten | |
| core | 1 kuukausi sitten | |
| docs | 1 kuukausi sitten | |
| kubernetes | 6 kuukautta sitten | |
| modules | 1 kuukausi sitten | |
| pkg | 1 kuukausi sitten | |
| protos | 7 kuukautta sitten | |
| spec | 5 kuukautta sitten | |
| tools | 3 vuotta sitten | |
| ui | 1 vuosi sitten | |
| .dockerignore | 5 vuotta sitten | |
| .gitignore | 5 kuukautta sitten | |
| ADOPTERS.MD | 2 vuotta sitten | |
| CLAUDE.md | 1 kuukausi sitten | |
| CODE_OF_CONDUCT.md | 2 vuotta sitten | |
| COMMUNITY.md | 3 kuukautta sitten | |
| CONTRIBUTING.md | 1 kuukausi sitten | |
| Dockerfile.cross | 4 kuukautta sitten | |
| GOVERNANCE.md | 3 vuotta sitten | |
| LICENSE | 7 vuotta sitten | |
| MAINTAINERS.md | 3 kuukautta sitten | |
| Makefile | 2 vuotta sitten | |
| NOTICE | 6 kuukautta sitten | |
| PROMETHEUS.md | 6 kuukautta sitten | |
| README.md | 3 kuukautta sitten | |
| ROADMAP.md | 2 vuotta sitten | |
| SECURITY.md | 6 kuukautta sitten | |
| THIRD_PARTY_LICENSES.txt | 2 vuotta sitten | |
| Tiltfile | 2 vuotta sitten | |
| Tiltfile.opencost | 3 kuukautta sitten | |
| generate.sh | 7 kuukautta sitten | |
| go.mod | 1 kuukausi sitten | |
| go.sum | 1 kuukausi sitten | |
| justfile | 3 kuukautta sitten | |
| opencost-header.png | 4 vuotta sitten | |
| sonar-project.properties | 11 kuukautta sitten | |
| tilt-values.yaml | 6 kuukautta sitten |
OpenCost give teams visibility into current and historical Kubernetes and cloud spend and resource allocation. These models provide cost transparency in Kubernetes environments that support multiple applications, teams, departments, etc. It also provides visibility into the cloud costs across multiple providers.
OpenCost was originally developed and open sourced by Kubecost. This project combines a specification as well as a Golang implementation of these detailed requirements. The web UI is available in the opencost/opencost-ui repository.
To see the full functionality of OpenCost you can view OpenCost features. Here is a summary of features enabled:
OpenCost is now installed and managed via the official Helm chart only.
Quick install on any Kubernetes 1.20+ cluster:
helm repo add opencost https://opencost.github.io/opencost-helm-chart
helm repo update
helm install opencost opencost/opencost
Note: The standalone Kubernetes manifest files have been removed. Please use Helm for all installations and upgrades. See the Helm installation docs for details and configuration.
Note for sharded Prometheus users: If you run Prometheus in a sharded (HA) setup, set
PROMETHEUS_SERVER_ENDPOINTto a global query endpoint (e.g., Thanos Query, Cortex, or Mimir). Pointing to a single Prometheus pod may result in incomplete or intermittent export results. See the Prometheus integration docs for details.
The OpenCost MCP (Model Context Protocol) server provides AI agents with access to cost allocation and asset data through a standardized interface. The MCP server is enabled by default in all OpenCost deployments, runs on port 8081, and is built into the Helm chart for easy production deployment. Users have full control to disable it or configure custom ports and settings.
# Clone and start OpenCost with MCP server
# You may also need to clone opencost-ui and opencost-helm-charts repositories
# Make sure the cloned repositories are in the same parent tree as opencost
git clone https://github.com/opencost/opencost.git
cd opencost
tilt up
The UI and Prometheus both run on port 9090. You may need to port-forward to a non-default port to access both them at the same time.
Tilt configuration notes (cloud costs):
OpenCost's Tilt values (tilt-values.yaml) include extra environment variables to enable Cloud Cost ingestion in dev:
# tilt-values.yaml (excerpt)
opencost:
exporter:
extraEnv:
CLOUD_COST_ENABLED: "true"
CLOUD_COST_CONFIG_PATH: "/var/cloud-integration/cloud-integration.json"
CLOUD_COST_ENABLED to "true" to turn on cloud cost ingestion.CLOUD_COST_CONFIG_PATH to the mounted cloud integration file used by Tilt (e.g., /var/cloud-integration/cloud-integration.json).tilt-values.yaml as needed during development.# Add the OpenCost Helm repository
helm repo add opencost https://opencost.github.io/opencost-helm-chart
helm repo update
# Deploy OpenCost with MCP server (enabled by default)
helm install opencost opencost/opencost
# Access MCP server via port forwarding (example)
kubectl port-forward svc/opencost 8081:8081
The MCP server is enabled by default in the Helm chart. For custom configuration:
# Deploy with MCP server disabled
helm install opencost opencost/opencost \
--set opencost.mcp.enabled=false
# Deploy with custom MCP port
helm install opencost opencost/opencost \
--set opencost.mcp.port=9091
# Deploy with debug logging
helm install opencost opencost/opencost \
--set opencost.mcp.extraEnv.MCP_LOG_LEVEL=debug
| Configuration | Command | Description |
|---|---|---|
| Default | helm install opencost opencost/opencost |
MCP enabled on port 8081 |
| Disable | --set opencost.mcp.enabled=false |
Completely disable MCP server |
| Custom Port | --set opencost.mcp.port=9091 |
Use different port |
| Debug Mode | --set opencost.mcp.extraEnv.MCP_LOG_LEVEL=debug |
Enable debug logging |
Configure your MCP client (e.g., Cursor) to connect to the OpenCost MCP server:
Default configuration (port 8081):
{
"mcpServers": {
"opencost": {
"type": "http",
"url": "http://localhost:8081"
}
}
}
Custom port configuration:
{
"mcpServers": {
"opencost": {
"type": "http",
"url": "http://localhost:9091"
}
}
}
For Kubernetes deployments:
{
"mcpServers": {
"opencost": {
"type": "http",
"url": "http://opencost.opencost.svc.cluster.local:8081"
}
}
}
For external access (with LoadBalancer/Ingress):
{
"mcpServers": {
"opencost": {
"type": "http",
"url": "http://your-opencost-domain.com:8081"
}
}
}
The MCP server provides these tools for AI agents:
get_allocation_costsRetrieve cost allocation data with filtering and aggregation.
Parameters:
window (required): Time window (e.g., "7d", "1h", "30m")aggregate (optional): Aggregation properties (e.g., "namespace", "pod", "node")step (optional): Resolution step sizeaccumulate (optional): Whether to accumulate over timeshare_idle (optional): Whether to share idle costsinclude_idle (optional): Whether to include idle resourcesget_asset_costsRetrieve asset cost data including nodes, disks, load balancers, and more.
Parameters:
window (required): Time window (e.g., "7d", "1h", "30m")get_cloud_costsRetrieve cloud cost data with provider, service, and region filtering.
Parameters:
window (required): Time window (e.g., "7d", "1h", "30m")aggregate (optional): Aggregation properties (e.g., "provider", "service", "region")accumulate (optional): Time accumulation ("day", "week", "month")provider (optional): Filter by cloud provider (e.g., "aws", "gcp", "azure")service (optional): Filter by service (e.g., "ec2", "compute", "s3")category (optional): Filter by category (e.g., "compute", "storage", "network")region (optional): Filter by region (e.g., "us-west-1", "us-central1")accountID (optional): Filter by account IDOnce configured, AI agents can query cost data like:
// Get cost allocation for the last 7 days
const allocation = await mcpClient.callTool('get_allocation_costs', {
window: '7d',
aggregate: 'namespace,node'
});
// Get asset costs for the last 24 hours
const assets = await mcpClient.callTool('get_asset_costs', {
window: '1d'
});
// Get cloud costs for AWS EC2 in us-west-1
const cloudCosts = await mcpClient.callTool('get_cloud_costs', {
window: '7d',
aggregate: 'service',
provider: 'aws',
service: 'ec2',
accumulate: 'day',
filter: 'regionID:"us-west-1"'
});
For detailed setup instructions and advanced configuration, see the Helm chart documentation.
We :heart: pull requests! See CONTRIBUTING.md for information on building the project from source and contributing changes.
If you need any support or have any questions on contributing to the project, you can reach us on CNCF Slack in the #opencost channel or attend the biweekly OpenCost Working Group community meeting from the Community Calendar to discuss OpenCost development.
You can view OpenCost documentation for a list of commonly asked questions.