Skip to content

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 clusters
plaintext
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 pending
plaintext
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.yaml

GitHub 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 Deployment

Pagination

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 --paginate

Debug mode

Pass -v to print API request and response details to stderr:

bash
kubeadapt get clusters -v

More jq recipes

See Output Formats: jq recipes for more filtering patterns.