Unmanaged (kubeconfig-only) Clusters
KSail can see and operate on any cluster in your kubeconfig, even one it did not provision — a managed cloud cluster (EKS/GKE/AKS), a kubeadm cluster, or a colleague’s cluster shared with you. These appear as unmanaged clusters: KSail surfaces them clearly marked, never hidden and never shown as a normal managed cluster, and refuses ksail-only lifecycle actions on them with a documented message instead of failing silently.
Seeing unmanaged clusters
Section titled “Seeing unmanaged clusters”ksail cluster list includes kubeconfig contexts KSail did not provision, each shown with an explicit unmanaged marker:
ksail cluster listUnmanaged clusters appear with blank distribution and provider columns (there is no KSail spec to read) and a STATUS of Unmanaged. Discovery reads your default kubeconfig (~/.kube/config), so a context kept only in a non-default KUBECONFIG path may not be listed.
Operating within limits
Section titled “Operating within limits”Much of KSail’s read/operate surface is client-go-backed, so it works against the selected kubeconfig context — managed or not. Switch to the unmanaged cluster first, then use it like any other:
ksail cluster switch my-eks-prod # switch the active kubeconfig contextksail cluster connect # open k9s against the selected contextksail cluster info --name my-eks-prod # endpoint + kubeconfig access for a named clusterksail cluster diagnose --name my-eks-prod # diagnoses the ACTIVE context; --name only labels the reportksail cluster backup ./snapshot # snapshot Kubernetes resources over the API serverksail cluster restore ./snapshot # restore themWithin the ksail workload group, the commands that work against any selected unmanaged context are the API-backed ones: the kubectl-style wrappers (get, logs, apply, exec, describe, wait, forward, …) plus watch, edit, validate, scan, and debug. Helm-based workload install works too — all resolve the kubeconfig and need no KSail metadata. (Backup and restore are ksail cluster subcommands, shown above, not workload ones.)
What is refused (ksail-only actions)
Section titled “What is refused (ksail-only actions)”Anything that needs KSail-managed provisioning or a spec.cluster.* configuration is clearly refused on an unmanaged cluster — never a silent no-op or a stack trace:
ksail cluster delete --name my-eks-prod# Error: "my-eks-prod" is an unmanaged cluster: cluster is not managed by ksail;# read-only operations (list, resource browsing, logs, exec) still workThe refusal covers the lifecycle operations KSail cannot drive without a provider:
- Lifecycle —
delete,update,start,stopare refused with the unmanaged message (no provider/distribution to act on).createis not a selected-context action — it provisions fromksail.yaml, so it is unaffected by this guard. - Component installation — CNI, CSI, metrics-server, GitOps/Flux, policy engine (all driven from
spec.cluster.*). - GitOps reconciliation —
workload reconciletargets GitOps-managed workloads and needs a Flux/GitOps-configured cluster, not just a kubeconfig.
Limitations summary
Section titled “Limitations summary”| Capability | Managed cluster | Unmanaged (kubeconfig-only) cluster |
|---|---|---|
| List / switch / connect | ✅ | ✅ (marked unmanaged) |
| Info | ✅ | ✅ with a resolvable --name |
| Diagnose | ✅ | ⚠️ diagnoses the active context — switch first (#6117) |
workload API-backed (get, logs, exec, apply, watch, forward, install, …) |
✅ | ✅ |
workload network / images / push |
✅ | ⚠️ also need a local ksail.yaml |
workload export / import |
✅ (Docker) | ⛔ Docker-backed nodes only |
cluster backup / cluster restore |
✅ | ✅ |
| Web UI / desktop resource browsing | ✅ | ⛔ listed only; operations are CLI-only (#6116) |
| Delete / update / start / stop | ✅ | ⛔ refused with a documented message |
| Component install (CNI, CSI, GitOps, policy) | ✅ | ⛔ requires spec.cluster.* |
| GitOps reconcile | ✅ | ⛔ requires a GitOps-configured cluster |
| Distribution / provider | reported | blank (no KSail spec) |