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 tracking. Un soutien, même symbolique, m'aide à couvrir l'hébergement et à garder ces ressources gratuites. Merci pour votre appui.

Le formulaire ne s'affiche pas ? Ouvrir Ko-fi dans un onglet.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn