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.
Le problème : commandes kubectl trop longues
Section intitulée « Le problème : commandes kubectl trop longues »Changer de contexte ou namespace avec kubectl natif est fastidieux :
# 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=monitoringProblè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
La solution : kubectx et kubens
Section intitulée « La solution : kubectx et kubens »| Outil | Fonction | Commande classique équivalente |
|---|---|---|
| kubectx | Change de contexte | kubectl config use-context ... |
| kubens | Change de namespace | kubectl config set-context --current --namespace=... |
Ce qui change :
# Avant (kubectl)kubectl config use-context gke_projet1-europe-west1-prodkubectl config set-context --current --namespace=monitoring
# Après (kubectx/kubens)kubectx prod # Si vous avez créé l'aliaskubens monitoringInstallation
Section intitulée « Installation »Version actuelle : 0.9.5 (stable)
mise est un gestionnaire de versions universel.
mise install kubectx@latest kubens@latestmise use -g kubectx@latest kubens@latestVérification :
kubectx --versionkubens --version0.9.50.9.5Homebrew installe les deux outils automatiquement :
brew install kubectxVérification :
kubectx --versionKrew est le gestionnaire de plugins officiel pour kubectl.
Installer Krew (voir documentation officielle) :
kubectl krew install ctx nsLes commandes sont accessibles via kubectl ctx et kubectl ns.
Téléchargement direct depuis GitHub :
# kubectxcurl -Lo kubectx https://github.com/ahmetb/kubectx/releases/latest/download/kubectx_v0.9.5_linux_x86_64.tar.gztar -xzf kubectx*.tar.gzsudo install kubectx /usr/local/bin/
# kubenscurl -Lo kubens https://github.com/ahmetb/kubectx/releases/latest/download/kubens_v0.9.5_linux_x86_64.tar.gztar -xzf kubens*.tar.gzsudo install kubens /usr/local/bin/pacman -S kubectxDémarrage rapide
Section intitulée « Démarrage rapide »Lister les contextes et namespaces
Section intitulée « Lister les contextes et namespaces »kubectx # Liste les contextes (le * indique l'actif)kubens # Liste les namespacesExemple de sortie :
dev-cluster* minikubeprod-clusterChanger de contexte/namespace
Section intitulée « Changer de contexte/namespace »kubectx prod-cluster # Passe au contexte prod-clusterkubens monitoring # Passe au namespace monitoringSortie :
✔ Switched to context "prod-cluster".✔ Active namespace is "monitoring"Revenir au précédent
Section intitulée « Revenir au précédent »kubectx - # Contexte précédentkubens - # Namespace précédentCette fonction est particulièrement utile quand vous alternez entre deux environnements.
Vérifier l’état actuel
Section intitulée « Vérifier l’état actuel »kubectl config current-context # Contextekubectl config view --minify -o jsonpath='{..namespace}' && echo # NamespaceUtilisation avancée
Section intitulée « Utilisation avancée »Renommer un contexte avec un alias
Section intitulée « Renommer un contexte avec un alias »Les noms générés par les clouds sont souvent longs :
gke_projet1-europe-west1-prodarn:aws:eks:eu-west-1:123456789:cluster/my-clusterCréez des alias courts et mémorisables :
kubectx prod=gke_projet1-europe-west1-prodkubectx staging=gke_projet1-europe-west1-stagingkubectx dev=gke_projet1-europe-west1-devDésormais, vous pouvez simplement taper :
kubectx prodSupprimer un contexte
Section intitulée « Supprimer un contexte »kubectx -d mon-ancien-contexte# Équivalent à : kubectl config delete-context mon-ancien-contexteCréer un contexte personnalisé
Section intitulée « Créer un contexte personnalisé »Pour créer un contexte avec un namespace par défaut spécifique :
kubectl config set-context dev-monitoring \ --cluster=dev-cluster \ --namespace=monitoring \ --user=dev-clusterLe nouveau contexte apparaît automatiquement dans kubectx.
Bonnes pratiques
Section intitulée « Bonnes pratiques »Toujours afficher le contexte dans le prompt
Section intitulée « Toujours afficher le contexte dans le prompt »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 :
kubectl config current-contextNommer les contextes intelligemment
Section intitulée « Nommer les contextes intelligemment »Incluez l’environnement et la région dans le nom :
prod-eu-west-1staging-eu-west-1dev-localCe 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 :
# ❌ Mauvais : dépend de l'état globalkubectl get pods
# ✅ Bon : explicite et reproductiblekubectl --context prod-cluster -n monitoring get podsMieux encore, utilisez un kubeconfig dédié en CI :
export KUBECONFIG=/path/to/ci-kubeconfig.yamlkubectl get podsUn kubeconfig par projet (optionnel)
Section intitulée « Un kubeconfig par projet (optionnel) »Si vous gérez beaucoup de clusters, séparez les kubeconfigs :
~/.kube/├── config # Contextes courants├── configs/│ ├── projet-a.yaml│ └── projet-b.yamlPuis fusionnez-les dans KUBECONFIG :
export KUBECONFIG=~/.kube/config:~/.kube/configs/projet-a.yamlQuand utiliser Kubie à la place ?
Section intitulée « Quand utiliser Kubie à la place ? »| Situation | Outil recommandé |
|---|---|
| Un seul terminal, travail interactif simple | kubectx/kubens |
| Plusieurs terminaux, risque d’erreur multi-cluster | Kubie |
| Scripts et automatisation | kubectl --context ... -n ... |
| Pipeline CI/CD | Kubeconfig 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)
Dépannage
Section intitulée « Dépannage »| Symptôme | Cause probable | Solution |
|---|---|---|
error: no contexts | Pas 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 terminal | Normal : le shell lit le fichier à chaque commande | C’est le comportement attendu |
| fzf s’ouvre au lieu de lister | fzf installé → mode interactif | Passez le nom du contexte directement |
À retenir
Section intitulée « À retenir »- 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
--contextet-nexplicitement - Pour l’isolation par terminal : passez à Kubie