AWS Integration
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 |
If you don't use Reserved Instances or Savings Plans, you can still connect your AWS account to enable EKS cluster auto-discovery and benefit from cloud cost features as they become available. The connection is read-only and requires no additional permissions later. If you'd rather skip this for now, continue with the installation steps.
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.
Running multiple AWS accounts? Connect through your management account. The script handles deploying to member accounts automatically.
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
We recommend Full Read-Only unless your security policy requires minimal permissions. Both levels are strictly read-only. Over time, Kubeadapt will surface additional cloud cost insights from your account, so Full Read-Only saves you from reconnecting later.
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
You'll need the aws CLI and permissions to create IAM roles. Run it as an admin or with iam:CreateRole and iam:AttachRolePolicy.
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