Skip to main content
import cluster
If you already have a Kubernetes cluster from any source, you can import it into CNAP. This works with any existing cluster - whether it’s self-managed, from cloud providers (EKS, GKE, AKS), or other managed Kubernetes services. This allows you to leverage your existing investment while gaining access to CNAP’s product deployment and marketplace features. Consider creating a managed cluster instead if you don’t already have a Kubernetes cluster set up. CNAP 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 vs. Create

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 , or want to maintain your existing cluster management approach.

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
  • Required Permissions: management, workload deployment, operations
If you’re not using admin kubeconfig, create a service account with these permissions and bind it to a ClusterRole:
RBAC configuration
apiVersion: v1
kind: ServiceAccount
metadata:
  name: cnap-sa
---
apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRole
metadata:
  name: cnap-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: cnap-role-binding
subjects:
  - kind: ServiceAccount
    name: cnap-sa
roleRef:
  kind: ClusterRole
  name: cnap-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.
Test cluster connection
kubectl cluster-info
kubectl get nodes
Export kubeconfig
# If using default location
cat ~/.kube/config

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

Navigate to Clusters Dashboard

In the clusters dashboard, click “Import Cluster” and choose “Import Existing Cluster”.
3

Upload and Validate Kubeconfig

Click “Upload kubeconfig file” and select your kubeconfig file.
CNAP will automatically verify cluster accessibility, required permissions, Kubernetes version compatibility, and network connectivity.
If validation fails, check your kubeconfig and cluster permissions before retrying.
4

Configure and Complete Import

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

What’s Next?

Once your cluster is imported, you can:

Limitations of Imported Clusters

Be aware of these differences compared to managed clusters:
Control plane and worker operations are managed by your cloud provider or yourself, depending on your cluster type. CNAP does not manage the control plane for imported clusters.
You manage worker nodes yourself or through your cloud provider. CNAP handles product deployments but not worker infrastructure management.
You must handle Kubernetes version updates and cluster maintenance yourself. CNAP does not automatically update imported clusters.
Limited monitoring compared to managed clusters. CNAP provides application-layer monitoring, but infrastructure monitoring is your responsibility.
Not supported through CNAP. You must configure and manage auto-scaling through your cloud provider or cluster management tools.
Application layer support only. CNAP helps with product deployments and troubleshooting, but full infrastructure support is not included.

Troubleshooting

  • Verify cluster is accessible from the internet
  • Check that kubeconfig has admin permissions
  • Ensure Kubernetes version is 1.33 or newer
  • Test connection locally:
Test connection
kubectl cluster-info
Expected output
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'.
  • Verify cluster API server is publicly accessible
  • Check firewall rules allow CNAP IP ranges
  • Ensure DNS resolution works for your cluster
  • Test from external network:
Test API server access
curl -k https://your-cluster-api:6443
  • Confirm kubeconfig has cluster-admin role
  • Check RBAC is properly configured
  • Verify service account has necessary permissions
  • Test permissions:
Test permissions
kubectl auth can-i "*" "*" --all-namespaces
  • Check cluster has adequate resources
  • Verify default namespace exists and is accessible
  • Review cluster events:
Review events
kubectl get events --sort-by=.metadata.creationTimestamp
  • Contact support with deployment logs