How-to Guides
AWS Integration
Connect an AWS account so Kubeadapt reflects your Reserved Instances and Savings Plans in node pricing.
On-demand and spot instance pricing works by default, no configuration needed. To reflect Reserved Instance and Savings Plan discounts in node pricing, connect your AWS account.
| Pricing Type | Setup Required | How It Works | Status |
|---|---|---|---|
| On-Demand | None | Fetched from AWS pricing APIs | Supported |
| Spot | None | Real-time spot prices per region, AZ, and instance type | Supported |
| Reserved Instances | Cloud account connection | Read via Cost Explorer API | Implemented |
| Savings Plans | Cloud account connection | Read via Cost Explorer API | Implemented |
Connecting Your AWS Account
Connecting your AWS account unlocks two things:
- RI/SP cost attribution: Your Reserved Instance and Savings Plan commitments are reflected in per-node pricing.
- EKS cluster auto-discovery: Your EKS clusters are automatically detected and listed in the Clusters tab.
How It Works
When you connect your account, a bash script creates a cross-account IAM role in your AWS account. Kubeadapt assumes this role to read data. Nothing is written or modified.
Step 1: Open the Cloud Accounts Tab
Navigate to Clusters → Cloud Accounts in the Kubeadapt dashboard and click Add Cloud Integration.
Step 2: Select AWS
Choose Amazon Web Services from the provider list.
Step 3: Name and Permissions
Give your integration a name. This is just a label for the Cloud Accounts table (e.g. "AWS" or your company name). If the account is a management account, member accounts get their names from AWS Organizations automatically.
Choose a permission level:
| Level | Policy | Best For |
|---|---|---|
| Full Read-Only (default) | AWS managed ReadOnlyAccess | Broadest visibility: cost analysis, resource discovery, EKS cluster detection |
| Minimal | Custom inline policy | Least privilege: only EKS, EC2, Cost Explorer, CloudWatch, Savings Plans |
Minimal permission details
The minimal policy includes:
- EC2:
DescribeInstances,DescribeReservedInstances,DescribeRegions,DescribeVolumes, and related read actions - EKS:
ListClusters,DescribeCluster,ListNodegroups,DescribeNodegroup - Cost Explorer:
GetCostAndUsage,GetSavingsPlansUtilization,GetReservationUtilization - CloudWatch:
ListMetrics,GetMetricData - Savings Plans:
Describe*,List* - Auto Scaling:
DescribeAutoScalingGroups,DescribeLaunchConfigurations - Organizations:
ListAccounts,DescribeOrganization
Step 4: Run the Setup Script
Kubeadapt generates a bash script for your integration. Copy it and run it in a terminal with AWS CLI access to the target account.
The script will:
- Create an IAM role (
kubeadapt-integration-role) with a trust policy scoped to Kubeadapt - Attach the selected permissions
- For management accounts, extend the role to all member accounts
- Report back to Kubeadapt automatically
Step 5: Verify
Kubeadapt polls automatically for the setup to complete. Once detected:
- The connection status changes to Connected
- Your EKS clusters appear in the Clusters tab
- RI/SP cost data appears within ~15 minutes
You can also click Verify Manually if you prefer not to wait for auto-detection.
Managing Cloud Accounts
Connected accounts appear in the Cloud Accounts table with:
- Status: Connected, Pending, Failed, or Disconnected
- Type: Management (with expandable member accounts) or standalone Account
- Actions: Verify Connection, Sync Members (management accounts), or Delete
AWS Organizations
When you connect a management account:
- You can Sync Members anytime to pick up newly added accounts
- Deleting a management account removes all associated member accounts
Verification
To confirm everything is working, check the Clusters page in the dashboard:
- On-demand/Spot pricing: Node costs should appear immediately after agent installation
- RI/SP attribution (optional): After connecting your cloud account, node-level costs reflect your commitment discounts within ~15 minutes
Removing the Integration
To disconnect your AWS account:
- Go to Clusters → Cloud Accounts
- Click the actions menu (⋯) on the integration and select Delete
- A dialog shows an uninstall command. Run it in your AWS account to remove the IAM role
For management accounts, this also cleans up the CloudFormation StackSet and member account roles.
Troubleshooting
Verification fails after running the script
- Make sure the AWS CLI session has the correct account and region
- Check that the IAM role was created:
aws iam get-role --role-name kubeadapt-integration-role - For management accounts, verify the StackSet deployed:
aws cloudformation describe-stack-set --stack-set-name kubeadapt-member-roles
RI/SP data not showing
- Cost Explorer can take up to 24 hours to populate initial data in a fresh account
- Verify the IAM role has
ce:GetReservationUtilizationandce:GetSavingsPlansUtilizationpermissions - Check that the integration status is Connected in Cloud Accounts
EKS clusters not discovered
- Ensure the IAM role has
eks:ListClustersandeks:DescribeClusterpermissions - If using Minimal permissions, verify the policy was applied correctly
Next Steps
- Quick Start Guide: Install the Kubeadapt agent
- Cost Attribution: How costs are calculated
- Right-sizing: Optimization recommendations