Aller au contenu
Conteneurs & Orchestration medium

kubectx et kubens : Basculer rapidement entre contextes et namespaces

9 min de lecture

Ce guide vous permet de basculer entre contextes et namespaces Kubernetes en une seule commande, au lieu de taper kubectl config use-context ... ou kubectl config set-context --current --namespace=.... kubectx et kubens sont parfaits pour le travail interactif quotidien. Vous apprendrez à les installer, les utiliser efficacement, et éviter le piège principal : l’état global partagé entre terminaux.

Changer de contexte ou namespace avec kubectl natif est fastidieux :

Fenêtre de terminal
# Changer de contexte (long et sujet aux erreurs de frappe)
kubectl config use-context gke_projet1-europe-west1-prod
# Changer de namespace (encore pire)
kubectl config set-context --current --namespace=monitoring

Problèmes concrets :

  • Noms de contextes longs générés par les clouds (GKE, EKS, AKS)
  • Erreurs de frappe fréquentes
  • Impossible de revenir rapidement au contexte précédent
  • Pas de visibilité sur le contexte actif
OutilFonctionCommande classique équivalente
kubectxChange de contextekubectl config use-context ...
kubensChange de namespacekubectl config set-context --current --namespace=...

Ce qui change :

Fenêtre de terminal
# Avant (kubectl)
kubectl config use-context gke_projet1-europe-west1-prod
kubectl config set-context --current --namespace=monitoring
# Après (kubectx/kubens)
kubectx prod # Si vous avez créé l'alias
kubens monitoring

Version actuelle : 0.9.5 (stable)

mise est un gestionnaire de versions universel.

Fenêtre de terminal
mise install kubectx@latest kubens@latest
mise use -g kubectx@latest kubens@latest

Vérification :

Fenêtre de terminal
kubectx --version
kubens --version
0.9.5
0.9.5
Fenêtre de terminal
kubectx # Liste les contextes (le * indique l'actif)
kubens # Liste les namespaces

Exemple de sortie :

dev-cluster
* minikube
prod-cluster
Fenêtre de terminal
kubectx prod-cluster # Passe au contexte prod-cluster
kubens monitoring # Passe au namespace monitoring

Sortie :

✔ Switched to context "prod-cluster".
✔ Active namespace is "monitoring"
Fenêtre de terminal
kubectx - # Contexte précédent
kubens - # Namespace précédent

Cette fonction est particulièrement utile quand vous alternez entre deux environnements.

Fenêtre de terminal
kubectl config current-context # Contexte
kubectl config view --minify -o jsonpath='{..namespace}' && echo # Namespace

Les noms générés par les clouds sont souvent longs :

gke_projet1-europe-west1-prod
arn:aws:eks:eu-west-1:123456789:cluster/my-cluster

Créez des alias courts et mémorisables :

Fenêtre de terminal
kubectx prod=gke_projet1-europe-west1-prod
kubectx staging=gke_projet1-europe-west1-staging
kubectx dev=gke_projet1-europe-west1-dev

Désormais, vous pouvez simplement taper :

Fenêtre de terminal
kubectx prod
Fenêtre de terminal
kubectx -d mon-ancien-contexte
# Équivalent à : kubectl config delete-context mon-ancien-contexte

Pour créer un contexte avec un namespace par défaut spécifique :

Fenêtre de terminal
kubectl config set-context dev-monitoring \
--cluster=dev-cluster \
--namespace=monitoring \
--user=dev-cluster

Le nouveau contexte apparaît automatiquement dans kubectx.

L’erreur la plus courante : exécuter une commande sur le mauvais cluster parce qu’on a oublié où on était.

Solution 1 : kube-ps1

kube-ps1 ajoute le contexte et namespace à votre prompt Bash/Zsh :

(⎈|prod-cluster:monitoring) user@host:~$

Solution 2 : Powerlevel10k

Si vous utilisez Powerlevel10k, activez le segment kubecontext dans votre configuration.

Solution 3 : Vérification manuelle

À défaut d’un prompt configuré, prenez l’habitude de vérifier avant toute commande critique :

Fenêtre de terminal
kubectl config current-context

Incluez l’environnement et la région dans le nom :

prod-eu-west-1
staging-eu-west-1
dev-local

Ce nommage rend les erreurs plus difficiles : prod-* est immédiatement identifiable comme production.

Scripts et CI : ne jamais dépendre du contexte courant

Section intitulée « Scripts et CI : ne jamais dépendre du contexte courant »

kubectx/kubens sont parfaits pour le travail interactif. En script ou pipeline CI, toujours être explicite :

Fenêtre de terminal
# ❌ Mauvais : dépend de l'état global
kubectl get pods
# ✅ Bon : explicite et reproductible
kubectl --context prod-cluster -n monitoring get pods

Mieux encore, utilisez un kubeconfig dédié en CI :

Fenêtre de terminal
export KUBECONFIG=/path/to/ci-kubeconfig.yaml
kubectl get pods

Si vous gérez beaucoup de clusters, séparez les kubeconfigs :

~/.kube/
├── config # Contextes courants
├── configs/
│ ├── projet-a.yaml
│ └── projet-b.yaml

Puis fusionnez-les dans KUBECONFIG :

Fenêtre de terminal
export KUBECONFIG=~/.kube/config:~/.kube/configs/projet-a.yaml
SituationOutil recommandé
Un seul terminal, travail interactif simplekubectx/kubens
Plusieurs terminaux, risque d’erreur multi-clusterKubie
Scripts et automatisationkubectl --context ... -n ...
Pipeline CI/CDKubeconfig dédié + variables d’environnement

La différence clé :

  • kubectx/kubens → changement global (tous les terminaux affectés)
  • Kubie → isolation par shell (chaque terminal est indépendant)
SymptômeCause probableSolution
error: no contextsPas de kubeconfig configuréVérifier ~/.kube/config
Contexte non trouvéNom incorrect ou kubeconfig non chargékubectl config get-contexts
Changement n’affecte pas un autre terminalNormal : le shell lit le fichier à chaque commandeC’est le comportement attendu
fzf s’ouvre au lieu de listerfzf installé → mode interactifPassez le nom du contexte directement
  • kubectx et kubens = productivité interactive (switch rapide, alias, toggle avec -)
  • Ils modifient l’état global du kubeconfig → toujours afficher le contexte dans votre prompt
  • Créez des alias courts pour vos contextes fréquents (prod, staging, dev)
  • En scripts/CI : toujours utiliser --context et -n explicitement
  • Pour l’isolation par terminal : passez à Kubie

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.