> ## Documentation Index
> Fetch the complete documentation index at: https://akua-1dce587a.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Import a cluster

> Connect your existing Kubernetes infrastructure

![An existing customer-operated Kubernetes cluster with its control plane, nodes, and workloads sits on one side of a trust boundary; a kubeconfig stamped with scoped access crosses the boundary so an Akua workspace shows the cluster imported, with its nodes and workloads inventoried and a namespaces, deployments, and RBAC access scope](https://mintcdn.com/akua-1dce587a/XutebFe61mz4P6aZ/images/heros/cluster-import-light.svg?fit=max\&auto=format\&n=XutebFe61mz4P6aZ\&q=85\&s=a6899cfdd35bf98b4d7fbb5a650b6324)

If you already have a Kubernetes cluster from any source, you can import it into Akua. This works with any existing cluster — whether it's self-managed, from cloud providers (EKS, GKE, AKS), or other managed Kubernetes services. This lets you leverage your existing investment while gaining access to Akua's product install and marketplace features.

Consider [creating a managed cluster](https://akua-1dce587a.mintlify.site/clusters/create.md) instead if you don't already have a Kubernetes cluster set up. Akua handles all the complex control plane management, so you can focus on your product rather than infrastructure operations. With imported clusters, control plane and worker operations are managed by your cloud provider or yourself, depending on your cluster type.

## When to import versus create

**Import your cluster**

Choose to import your cluster if you already have Kubernetes infrastructure from EKS, GKE, AKS, or other providers, have invested in cluster setup, need specific configurations like custom networking or compliance requirements (Akua makes security simple because you have full control of your worker machines running on your terms, in environments your customers need.), or want to maintain your existing cluster management approach.

**Create a managed cluster**

Consider creating a new managed cluster if you want Akua to handle the control plane with zero operational overhead, are new to Kubernetes and want to avoid complexity, prefer simplicity to focus on products rather than infrastructure, or need quick setup to get running in minutes.

## Prerequisites

Before importing your cluster, ensure it meets these requirements:

* **Kubernetes version**: 1.33+ (check with `kubectl version`)
* **Cluster access**: Admin permissions, network connectivity, valid kubeconfig (A kubeconfig file contains cluster connection information, authentication credentials, and context settings needed to access a Kubernetes cluster.)
* **Required permissions**: Namespace (A namespace is a Kubernetes mechanism for organizing and isolating resources within a cluster. Each product install gets its own namespace for security and isolation between different customer installs.) management, workload deployment, RBAC (RBAC (Role-Based Access Control) is a Kubernetes authorization mechanism that controls access to cluster resources based on user roles and permissions.) operations

> **View detailed RBAC permissions**
>
> If you're not using admin kubeconfig, create a service account with these permissions and bind it to a ClusterRole:
>
> ```yaml RBAC configuration theme={null}
> apiVersion: v1
> kind: ServiceAccount
> metadata:
>   name: akua-sa
> ---
> apiVersion: rbac.authorization.k8s.io/v1
> kind: ClusterRole
> metadata:
>   name: akua-role
> rules:
>   - apiGroups: ['']
>     resources: ['pods', 'pods/log', 'pods/exec', 'secrets']
>     verbs: ['get', 'list', 'watch', 'create', 'update', 'delete']
>   - apiGroups: ['apps']
>     resources: ['statefulsets', 'statefulsets/status']
>     verbs: ['get', 'list', 'watch', 'create', 'update', 'delete']
>   - apiGroups: ['']
>     resources: ['namespaces', 'namespaces/finalize']
>     verbs: ['get', 'list', 'watch', 'create', 'update', 'delete']
> ---
> apiVersion: rbac.authorization.k8s.io/v1
> kind: ClusterRoleBinding
> metadata:
>   name: akua-role-binding
> subjects:
>   - kind: ServiceAccount
>     name: akua-sa
> roleRef:
>   kind: ClusterRole
>   name: akua-role
>   apiGroup: rbac.authorization.k8s.io
> ```

## How to import your cluster

**1. Prepare your kubeconfig**

Ensure you have a valid kubeconfig file with admin access to your cluster.

```bash Test cluster connection theme={null}
kubectl cluster-info
kubectl get nodes
```

```bash Export kubeconfig theme={null}
# If using default location
cat ~/.kube/config

# Or specify custom path
cat /path/to/your/kubeconfig
```

**2. Navigate to the clusters dashboard**

In the [clusters dashboard](https://akua.dev/clusters), click **"Import Cluster"** and choose **"Import Existing Cluster"**.

**3. Upload and validate kubeconfig**

**File upload**

Click "Upload kubeconfig file" and select your kubeconfig file.

**Paste content**

Copy your kubeconfig content and paste it into the text area.

Akua will automatically verify cluster accessibility, required permissions, Kubernetes version compatibility, and network connectivity.

> [!WARNING]
>
> If validation fails, check your kubeconfig and cluster permissions before retrying.

**4. Configure and complete import**

Set up how Akua will interact with your cluster: choose a cluster name, set the default namespace where new products will deploy, configure optional resource limits, and enable Akua observability (recommended). Then click **"Import Cluster"** to finalize the process.

Your cluster will appear in the dashboard as "Active" and ready for product installs.

## Limitations of imported clusters

Be aware of these differences compared to managed clusters:

> **Control plane management**
>
> Control plane and worker operations are managed by your cloud provider or yourself, depending on your cluster type. Akua does not manage the control plane for imported clusters.

> **Worker node provisioning**
>
> You manage worker nodes yourself or through your cloud provider. Akua handles product installs but not worker infrastructure management.

> **Automatic updates**
>
> You must handle Kubernetes version updates and cluster maintenance yourself. Akua does not automatically update imported clusters.

> **Monitoring**
>
> Limited monitoring compared to managed clusters. Akua provides application-layer monitoring, but infrastructure monitoring is your responsibility.

> **Auto-scaling**
>
> Not supported through Akua. You must configure and manage auto-scaling through your cloud provider or cluster management tools.

> **Support level**
>
> Application layer support only. Akua helps with product installs and troubleshooting, but full infrastructure support is not included.

## Troubleshooting

> **Kubeconfig validation fails**
>
> * Verify cluster is accessible from the internet
> * Check that kubeconfig has admin permissions
> * Ensure Kubernetes version is 1.33 or newer
> * Test connection locally:
>
> ```bash Test connection theme={null}
> kubectl cluster-info
> ```
>
> ```text Expected output theme={null}
> Kubernetes control plane is running at https://xxx.xxx.xxx.xxx:6443
> CoreDNS is running at https://xxx.xxx.xxx.xxx:6443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy
>
> To further debug and diagnose cluster problems, use 'kubectl cluster-info dump'.
> ```

> **Network connectivity issues**
>
> * Verify cluster API server is publicly accessible
> * Check firewall rules allow Akua IP ranges
> * Ensure DNS resolution works for your cluster
> * Test from external network:
>
> ```bash Test API server access theme={null}
> curl -k https://your-cluster-api:6443
> ```

> **Permission errors during import**
>
> * Confirm kubeconfig has cluster-admin role
> * Check RBAC is properly configured
> * Verify service account has necessary permissions
> * Test permissions:
>
> ```bash Test permissions theme={null}
> kubectl auth can-i "*" "*" --all-namespaces
> ```

> **Products failing to deploy**
>
> * Check cluster has adequate resources
> * Verify default namespace exists and is accessible
> * Review cluster events:
>
> ```bash Review events theme={null}
> kubectl get events --sort-by=.metadata.creationTimestamp
> ```
>
> * Contact support with deployment logs

## API

Manage clusters programmatically.

> **[Clusters API reference](https://akua-1dce587a.mintlify.site/api-reference/clusters/list-clusters.md)**
>
> Endpoints, parameters, response shapes, and try-it playground.

> **[Authentication](https://akua-1dce587a.mintlify.site/apis/authentication.md)**
>
> Mint API tokens for programmatic access.

## Related topics

> **[Create a managed cluster](https://akua-1dce587a.mintlify.site/clusters/create.md)**
>
> Set up a cluster where Akua manages the control plane.

> **[Clusters overview](https://akua-1dce587a.mintlify.site/clusters.md)**
>
> Understand how clusters work in Akua.

> **[Storage](https://akua-1dce587a.mintlify.site/clusters/storage.md)**
>
> Add persistent storage to your cluster.

> **[Regions](https://akua-1dce587a.mintlify.site/clusters/regions.md)**
>
> Organize imported clusters with the rest of your infrastructure.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.