Skip to content
Docs · Clusters and kubeconfigs

Clusters

Clusters and kubeconfigs

How Kubyl finds kubeconfigs, groups contexts and shows connection state.

Kubyl merges all your kubeconfigs into one sidebar. You don't import anything: it watches the files and reloads them when they change.

Where clusters come from

  • ~/.kube/config, when Load ~/.kube/config is on (kubernetes.load_default_kubeconfig, default on).
  • Every file in the $KUBECONFIG path list, for example ~/.kube/a:~/.kube/b (kubernetes.load_kubeconfig_env, default on).
  • Extra files or folders you add (kubernetes.kubeconfigs). A folder means every file in it.
  • A file dropped onto the window.
  • Pasted YAML via Clusters: Paste Kubeconfig YAML…. It is saved to kubeconfigs/ in the config directory with mode 0600.

Use Clusters: Reload Kubeconfigs to force a reload. If two files define the same context name, Kubyl suffixes the later one with @<file-stem>.

Context grouping

Contexts in one file that differ only by namespace, the oc project pattern, are shown as a single cluster entry. This is on by default (kubernetes.group_contexts). Use Show Contexts Separately in a row's context menu to split one out, or Show as One Cluster to merge it again.

Connection state

A cluster connects when you expand it, switch to it or open a favorite. Kubyl then pings it every 30 seconds (kubernetes.health_check_interval). The status dot shows one of:

StateMeaning
DisconnectedNot connected yet, or you disconnected it.
ConnectingHandshake in progress.
ConnectedHealthy. The tooltip shows latency and server version.
Auth requiredCredentials are missing or expired. Kubyl offers to sign in.
UnreachableThe API server doesn't answer. Kubyl retries with a countdown.
ForbiddenThe server rejected your credentials' permissions.

Kubyl also detects the distribution (EKS, GKE, AKS, OpenShift, k3s, RKE2, kind, minikube, Docker Desktop or plain Kubernetes) and uses it to enable the right features. Namespaces are watched, and if your account may not list namespaces you can name the ones to offer in kubernetes.contexts.<id>.namespaces.

The Clusters & Kubeconfigs tab

Open it with Clusters: Open Clusters & Kubeconfigs or Manage kubeconfigs… in the cluster switcher.

  • Left: your kubeconfig sources, New… and Add buttons, a drop zone and the toggles for ~/.kube/config, $KUBECONFIG and One entry per cluster and user.
  • Right: a table of contexts and a card for the selected one. The card has Switch to, Connect or Disconnect, Sign in…, Edit context… and per-context settings.
Per-context settingEffectSettings key
Production clusterRed PROD badge and typed confirmations. See Production and read-only.production
Read-only modeBlocks mutating actions.read_only
Hide contextRemoves it from the sidebar.hidden
Default namespaceNamespace selected when you switch to the cluster.default_namespace
ColorTints the cluster icon. Red, orange, yellow, green, cyan, blue, purple or gray.color

These live under kubernetes.contexts.<cluster-id> in settings.json. The cluster id is <context>@<kubeconfig path>. A TLS verification disabled warning appears on contexts that turn verification off.

Organising the sidebar

  • Folders: click New group and drag clusters in, for example “Prod” and “Staging”. Right-click a folder to rename, reorder or delete it.
  • Filter: the Filter kinds… box narrows the resource tree. Show connected clusters only hides idle clusters.
  • Order: explorer.cluster_order is name (default) or connected_first.
  • Favorites: star a namespace, or favorite any tab. A favorite is matched to its context by name, server and file, so it survives moving a kubeconfig. Right-click a favorite for Open Namespace Overview, Open Namespace Network Flows and Open Favorites Workspace, a merged multi-cluster table with a cluster column.

Proxies

HTTPS_PROXY, HTTP_PROXY and NO_PROXY (and SOCKS5) are honoured when connecting to clusters.

Something missing or wrong? Open an issue on GitHub.