CLI
CLI Examples
Copy-paste examples for the Kubeadapt CLI: list clusters, filter recommendations, export cost data, paginate, and run it in GitHub Actions.
Last updated
Copy-paste examples for common cost tasks. All examples assume you've already authenticated (see Authentication).
List all clusters
bash
kubeadapt get clustersplaintext
1╭──────────────────────────────────────┬────────────┬──────────┬───────────┬─────────────┬────────┬───────┬───────┬──────────╮
2│ ID │ Name │ Provider │ Region │ Environment │ Status │ CPU% │ Mem% │ $/hr │
3├──────────────────────────────────────┼────────────┼──────────┼───────────┼─────────────┼────────┼───────┼───────┼──────────┤
4│ c1a2b3c4-d5e6-7890-abcd-ef1234567890 │ production │ aws │ eu-west-1 │ production │ active │ 41.2% │ 63.8% │ $12.4700 │
5│ 9b2e47d1-8c05-4f36-b1ae-7d40e9a2c518 │ staging │ aws │ us-east-1 │ staging │ active │ 11.5% │ 29.1% │ $4.2100 │
6╰──────────────────────────────────────┴────────────┴──────────┴───────────┴─────────────┴────────┴───────┴───────┴──────────╯
7
8Showing 2 (limit 100). End of results.Find pending rightsizing recommendations
bash
kubeadapt get recommendations --recommendation-type workload_rightsizing --status pendingplaintext
1╭──────────────────────────────────────┬────────────┬──────────────────────┬───────────────────────┬──────────┬────────┬────────────╮
2│ ID │ Cluster │ Type │ Resource │ Priority │ Risk │ Savings/hr │
3├──────────────────────────────────────┼────────────┼──────────────────────┼───────────────────────┼──────────┼────────┼────────────┤
4│ f47ac10b-58cc-4372-a567-0e02b2c3d479 │ production │ workload_rightsizing │ payments/api-gateway │ high │ low │ $0.0586 │
5│ 3c9e1f2a-7b4d-4e8a-9f6c-1d2e3f4a5b6c │ production │ workload_rightsizing │ monitoring/prometheus │ medium │ low │ $0.0253 │
6╰──────────────────────────────────────┴────────────┴──────────────────────┴───────────────────────┴──────────┴────────┴────────────╯
7
8Showing 2 (limit 100). End of results.See Right-sizing for how recommendations are generated.
Check costs by team
bash
kubeadapt get teams -o json | jq -c '.data[] | {team: .metadata.name, hourly: .cost.current_run_rate_hourly.amount}'json
{"team":"platform","hourly":"2.8000"}
{"team":"backend","hourly":"1.6960"}
{"team":"data","hourly":"4.7340"}Costs are hourly run rates. See Cost Attribution for how they are calculated.
Find over-provisioned workloads
List workloads using less than 30% of the CPU they request:
bash
kubeadapt get workloads --paginate --limit 500 -o json | jq '[.data[] | select(.utilization.cpu.requested_cores > 0 and .utilization.cpu.utilization_percent < 30) | {name: .metadata.name, namespace: .metadata.namespace, cpu_util: .utilization.cpu.utilization_percent, hourly: .cost.current_run_rate_hourly.amount}]'Export data to a file
bash
kubeadapt get nodes --cluster-id c1a2b3c4-d5e6-7890-abcd-ef1234567890 --paginate -o json > nodes.json
kubeadapt get recommendations --status pending --paginate -o yaml > pending-recs.yamlGitHub Actions workflow
yaml
1name: Weekly cost report
2on:
3 schedule:
4 - cron: "0 9 * * 1"
5
6jobs:
7 cost-report:
8 runs-on: ubuntu-latest
9 steps:
10 - uses: actions/setup-go@v5
11 with:
12 go-version: '1.26.x'
13
14 - name: Install CLI
15 run: go install github.com/kubeadapt/kubeadapt-cli/cmd/kubeadapt@latest
16
17 - name: Get pending savings
18 env:
19 KUBEADAPT_API_KEY: ${{ secrets.KUBEADAPT_API_KEY }}
20 run: |
21 kubeadapt get recommendations --status pending --paginate --limit 500 -o json > recommendations.json
22 SAVINGS=$(jq '[.data[].savings.estimated_hourly.amount | tonumber] | add // 0' recommendations.json)
23 echo "Total pending savings: \$${SAVINGS}/hour"Filter workloads by namespace and kind
bash
kubeadapt get workloads --namespace payments --kind DeploymentPagination
Fetch 20 workloads at a time. The table footer (or meta.pagination.next_cursor in JSON) gives the cursor for the next page:
bash
kubeadapt get workloads --cluster-id c1a2b3c4-d5e6-7890-abcd-ef1234567890 --limit 20
kubeadapt get workloads --cluster-id c1a2b3c4-d5e6-7890-abcd-ef1234567890 --limit 20 --cursor=<next_cursor>Or fetch everything in one run:
bash
kubeadapt get workloads --cluster-id c1a2b3c4-d5e6-7890-abcd-ef1234567890 --limit 500 --paginateDebug mode
Pass -v to print API request and response details to stderr:
bash
kubeadapt get clusters -vMore jq recipes
See Output Formats: jq recipes for more filtering patterns.