kubeconfig guide
How to use kuberoutectl to bring the clusters already in your kubeconfig
— self-hosted, on-prem, homelab, kind/minikube, or clusters someone handed you a
context for — into the same inventory as your cloud clusters, and switch between
them by short alias. See the shared model for the concepts.
What makes kubeconfig different
Azure and AWS authenticate you; a kubeconfig is just a static file that already contains everything. So this provider doesn’t log in or fetch anything — it reads what’s there and lets you organize and switch it:
| kubeconfig element | maps to | notes |
|---|---|---|
clusters[] |
Scope | kind cluster, carries the API server |
users[] |
Credential | health from how it authenticates |
contexts[] |
Target | what you actually select and use |
Consequently: nothing here is renewable by kuberoutectl (CanRenew is
false). A client certificate or bearer token is static; an exec / auth-provider
credential (the aws/gcp/oidc plugins) is unknown, because it’s refreshed on
demand by its plugin, outside our view. Neither is a failure — it’s just honest.
Prerequisites
kubectlinstalled and on yourPATH.kuberoutectlresolves it (config path → managed runtime →PATH→ error) and reads your kubeconfig through it.- A kubeconfig at
~/.kube/config, or the paths in$KUBECONFIG(both merged, exactly askubectlsees them).
$ kuberoutectl doctor
CHECK STATUS DETAIL
provider:kubeconfig ok resolved at /usr/local/bin/kubectl
1. Discover your contexts
$ kuberoutectl sync kubeconfig
Syncing kubeconfig ...
→ reading kubeconfig (kubectl config view)
→ found 2 cluster(s), 2 user(s), 2 context(s)
→ discovered 2 context(s)
Synced provider: kubeconfig
sources: 1
credentials: 2
scopes: 2
targets: 2
This runs kubectl config view --raw -o json and maps it in. No credentials are
read out of the file — only how each user authenticates, to classify health.
$ kuberoutectl target list --provider kubeconfig
ALIAS PLATFORM REGION HEALTH PROVIDER
homelab kubeconfig static kubeconfig
prod-eks kubeconfig unknown kubeconfig
The ALIAS is the context name (kubeconfig names are already short), usable
directly with target use/inspect/label. REGION is blank — kubeconfig has
no region concept. Likewise, target inspect reports the Kubernetes version as
unknown: a kubeconfig is a static file with no server version to read, and
kuberoutectl never probes the cluster to find one.
2. Check credential health
$ kuberoutectl credential list --provider kubeconfig
ID PROVIDER IDENTITY HEALTH ACTION
kubeconfig:user:prod-eks-user kubeconfig prod-eks-user unknown none
kubeconfig:user:homelab-admin kubeconfig homelab-admin static none
static— a client certificate / token / basic auth. Long-lived, nothing to renew here. (If it expires, fix it at the source, e.g. re-issue the cert.)unknown— anexecor auth-provider user; the plugin manages refresh.
There is no renew action for kubeconfig — the provider reports CanRenew:false.
3. Switch to a cluster
$ kuberoutectl target use homelab
Now using target: homelab (homelab)
kubeconfig updated and set as the current context.
Because the context already exists, this is just `kubectl config use-context