kubectx et kubens sont deux utilitaires CLI développés par Ahmet Alp Balkan (Google) qui résolvent un problème quotidien : changer de cluster ou de namespace dans Kubernetes est verbeux avec kubectl natif. kubectx remplace kubectl config use-context <nom-très-long> par kubectx prod. kubens remplace kubectl config set-context --current --namespace=... par kubens production. Avec fzf installé, la sélection devient interactive avec une recherche filtrée en temps réel.
Informations essentielles
Origine : Ahmet Alp Balkan (Google) · Licence : Apache 2.0 · Architectures : x86_64, ARM64
Support : Projet stable et très adopté, maintenance active.
Stack par défaut
| Composant | Valeur |
|---|---|
kubectx | Switch entre contextes (clusters) du kubeconfig |
kubens | Switch entre namespaces du contexte actif |
| Interface interactive | Via fzf (optionnel mais recommandé) |
| Shell | Autocomplétion Bash, Zsh, Fish |
| Prompt | Plugin kube-ps1 pour afficher contexte/namespace |
Prérequis
| Ressource | Valeur |
|---|---|
| kubeconfig | Configuré avec les contextes souhaités |
| fzf | Optionnel - pour l'interface interactive |
Installation
# Homebrew (macOS / Linux)
brew install kubectx
# Linux - binaires directs
sudo git clone https://github.com/ahmetb/kubectx /opt/kubectx
sudo ln -s /opt/kubectx/kubectx /usr/local/bin/kubectx
sudo ln -s /opt/kubectx/kubens /usr/local/bin/kubens
# Arch Linux
pacman -S kubectx
# Windows (Scoop)
scoop install kubectx
# Autocomplétion Zsh
mkdir -p ~/.zsh/completion
ln -s /opt/kubectx/completion/kubectx.zsh ~/.zsh/completion/_kubectx
ln -s /opt/kubectx/completion/kubens.zsh ~/.zsh/completion/_kubens
Interface interactive avec fzf
# Installer fzf
brew install fzf
# ou
git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf && ~/.fzf/install
# Avec fzf installé, kubectx et kubens deviennent interactifs :
kubectx # Affiche une liste filtrée interactive des contextes
kubens # Affiche une liste filtrée interactive des namespaces
Utilisation
kubectx - gestion des contextes
# Lister les contextes disponibles
kubectx
# Switcher vers un contexte
kubectx prod-cluster
# Revenir au contexte précédent (comme cd -)
kubectx -
# Renommer un contexte
kubectx prod=gke_my-project_europe-west1_prod
# Supprimer un contexte
kubectx -d old-cluster
# Contexte actif
kubectx -c
kubens - gestion des namespaces
# Lister les namespaces du contexte actif
kubens
# Switcher vers un namespace
kubens production
# Revenir au namespace précédent
kubens -
# Namespace actif
kubens -c
Intégration dans le prompt (kube-ps1)
Pour afficher le contexte et le namespace dans votre prompt shell :
# Installation
brew install kube-ps1
# Ajouter dans ~/.zshrc ou ~/.bashrc
source "$(brew --prefix kube-ps1)/share/kube-ps1.sh"
PS1='$(kube_ps1)'$PS1
# Activer/désactiver
kubeon # Active kube-ps1
kubeoff # Désactive kube-ps1
Mise à jour
brew upgrade kubectx
# Ou : git pull sur le repo cloné
cd /opt/kubectx && git pull
Commandes utiles
kubectx # Lister les contextes
kubectx <nom> # Switcher de contexte
kubectx - # Contexte précédent
kubectx -c # Contexte actif
kubens # Lister les namespaces
kubens <nom> # Switcher de namespace
kubens - # Namespace précédent
kubens -c # Namespace actif
Ressources
- GitHub : https://github.com/ahmetb/kubectx
- Releases : https://github.com/ahmetb/kubectx/releases
- kube-ps1 (prompt) : https://github.com/jonmosco/kube-ps1
- fzf (interface interactive) : https://github.com/junegunn/fzf