Cloud IAM (AWS, GCP, Azure)¶
Add read-only cloud credentials so KubeManta can fetch your VPC / subnet topology and display it alongside your Kubernetes network in the Network view.
What it gives you¶
- Multi-cloud topology — see your AWS VPCs, GCP VPCs, or Azure Virtual Networks in the Network view
- Subnet utilization — view available and used IP addresses per subnet (capacity planning)
- Combined view — Kubernetes nodes + cloud networking on one diagram
- No write access — credentials are read-only; KubeManta can never modify your cloud infrastructure
Tier: Free
Prerequisites¶
One of: - AWS account with credentials (access key / role ARN / IRSA) and permissions to describe VPCs, subnets, and security groups - GCP project with a service account and permissions to describe VPCs and subnets - Azure subscription with credentials (client secret / managed identity) and permissions to describe virtual networks and subnets
Configure in KubeManta¶
AWS¶
Option A: Access Key (simplest, dev/test)¶
- In AWS IAM, create a user (or use an existing one):
- Name:
kubemanta-reader(or your choice) -
No console access — programmatic access only (access key + secret)
-
Attach an inline policy with read-only VPC permissions:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ec2:DescribeVpcs",
"ec2:DescribeSubnets",
"ec2:DescribeSecurityGroups",
"ec2:DescribeNetworkInterfaces"
],
"Resource": "*"
}
]
}
-
Create an access key and save the Access Key ID and Secret Access Key.
-
In KubeManta, go to Admin → Cloud and select AWS.
-
Fill in:
- Auth Mode:
Access Key - Access Key ID and Secret Access Key (from above)
-
Region: your cluster's region (e.g.,
us-east-1) -
Click Test to verify the credentials work.
-
Click Save.
Option B: Role ARN + IRSA (production)¶
If your cluster runs on EKS:
- In AWS IAM, create a role for your EKS node (or a separate role):
- Trust policy: allow the EKS cluster's OIDC provider +
kubemanta-systemServiceAccount -
Inline policy: same read-only VPC permissions as above
-
Note the Role ARN (e.g.,
arn:aws:iam::123456789:role/kubemanta-reader). -
In KubeManta, go to Admin → Cloud and select AWS.
-
Fill in:
- Auth Mode:
IAM Role ARN - Role ARN (from above)
-
Region: your cluster's region
-
Click Save — KubeManta will use your cluster's IRSA to assume the role.
Option C: STS Temporary Credentials¶
For short-lived access:
-
In AWS, use
sts:AssumeRoleto obtain temporary credentials (Access Key ID + Secret Access Key + Session Token). -
In KubeManta, go to Admin → Cloud and select AWS.
-
Fill in:
- Auth Mode:
STS Temporary - Access Key ID, Secret Access Key, and Session Token
-
Region: your region
-
Click Save. (Credentials expire after a few hours; refresh manually via
sts:AssumeRoleand update KubeManta.)
GCP¶
- In GCP, create a service account:
- Name:
kubemanta-reader(or your choice) -
Grant the role: Compute Viewer (read-only)
-
Create a JSON key for the service account and download it.
-
In KubeManta, go to Admin → Cloud and select GCP.
-
Fill in:
- Auth Mode:
Service Account JSON - Service Account JSON: paste the full JSON key
-
Project ID: your GCP project ID (auto-populated if you paste the JSON)
-
Click Test to verify.
-
Click Save. The JSON key is stored encrypted at rest.
Alternative: Workload Identity (GKE)¶
If your KubeManta cluster is on GKE:
-
In GCP, create a service account with Compute Viewer role.
-
Create a workload identity binding:
gcloud iam service-accounts add-iam-policy-binding [email protected] \ --role roles/iam.workloadIdentityUser \ --member "serviceAccount:PROJECT.svc.id.goog[kubemanta-system/kubemanta-agent]" -
Annotate the KubeManta ServiceAccount:
kubectl annotate serviceaccount kubemanta-agent -n kubemanta-system \ iam.gke.io/gcp-service-account=[email protected] -
In KubeManta, go to Admin → Cloud and select GCP.
-
Fill in:
- Auth Mode:
Workload Identity -
Project ID: your GCP project ID
-
Click Save.
Azure¶
- In Azure, create a service principal (app registration):
- Name:
kubemanta-reader(or your choice) -
Grant the role: Reader (read-only) on the subscription or resource group
-
Create a client secret and note the Client ID, Client Secret, and Tenant ID.
-
In KubeManta, go to Admin → Cloud and select Azure.
-
Fill in:
- Auth Mode:
Client Secret - Tenant ID, Client ID, Client Secret (from above)
-
Subscription ID: your Azure subscription
-
Click Test to verify.
-
Click Save. The secret is stored encrypted at rest.
Alternative: Managed Identity (AKS)¶
If your KubeManta cluster is on AKS:
-
Create a managed identity with Reader role.
-
Assign the managed identity to the AKS node pool or pod.
-
In KubeManta, go to Admin → Cloud and select Azure.
-
Fill in:
- Auth Mode:
Managed Identity -
Subscription ID: your Azure subscription
-
Click Save. KubeManta will use the pod's managed identity automatically.
Verify¶
- After saving, click Network in the sidebar.
- Look for a ☁ Cloud toggle in the top bar.
- Click it to show cloud resources.
- You should see your VPCs / subnets alongside your Kubernetes nodes.
Expected states¶
| State | Meaning | Next step |
|---|---|---|
| No ☁ Cloud toggle | No cloud credentials are configured | Follow "Configure in KubeManta" above and save |
| ☁ Cloud toggle present, but cloud view is empty | Credentials are saved, but KubeManta couldn't connect or fetch resources | Check logs and test credentials again |
| VPCs and subnets appear | Success! | Explore subnet utilization, node placement |
Troubleshooting¶
"Test failed" when I click Test¶
For AWS (Access Key):
- Double-check the Access Key ID and Secret Access Key are not truncated or have extra spaces.
- Verify the IAM user has the ec2:Describe* permissions in the policy.
- Check that the credentials aren't expired or revoked.
For AWS (Role ARN):
- Verify the Role ARN is correct and the trust policy allows the cluster's OIDC provider.
- Ensure the role has the ec2:Describe* inline policy.
- Check that IRSA is properly configured on your cluster.
For GCP:
- Paste the full JSON key (it should start with { and end with }).
- Verify the service account has Compute Viewer role.
- Check that the Project ID in the JSON matches your actual project.
For Azure: - Verify Tenant ID, Client ID, and Client Secret are not truncated. - Ensure the service principal has Reader role on the subscription. - Check that the Client Secret hasn't expired (Azure secrets expire after 2 years by default).
Check KubeManta logs:
Cloud view is empty but test passed¶
Did you pick a region / subscription? - AWS: ensure Region is set to where your VPCs are. - Azure: ensure Subscription ID is set to where your VNets are.
Are there VPCs / subnets in that region? - Check your cloud console to confirm resources exist. - KubeManta only shows resources in the configured region/subscription.
Is the cloud credential still valid? - Refresh the page in KubeManta. - If you're using temporary credentials (AWS STS), they may have expired — update them.
Network bandwidth charts still don't appear¶
Cloud credentials are just for VPC/subnet topology. Network bandwidth requires either:
- Prometheus configured (see Prometheus integration)
- Or the kubelet cadvisor scrape enabled in Helm (metrics.kubeletScrape.enabled=true)
Cloud IAM doesn't provide bandwidth data.
Related¶
- Cloud Permissions — detailed RBAC policies per cloud
- Network feature — how to use the cloud topology view
- Metrics — pod network bandwidth (requires Prometheus or cadvisor scrape)