Aller au contenu

Gérer vos contextes Kubernetes avec Kubie

Mise à jour :

logo kubie

Kubie est un outil puissant pour simplifier la gestion des contextes et namespaces Kubernetes tout en réduisant les erreurs. Grâce à ses sessions isolées, il permet de travailler en toute sécurité sur plusieurs clusters sans modifier la configuration globale. Son intégration avec les principaux shells, sa personnalisation avancée et sa gestion automatique des kubeconfigs en font un incontournable pour les administrateurs Kubernetes.

Kubie, qu’est-ce que c’est ?

Présentation de Kubie et ses avantages

Kubie est un outil en ligne de commande qui facilite la gestion des contextes Kubernetes et des namespaces. Contrairement à l’approche traditionnelle avec kubectl config use-context et kubens, Kubie offre une gestion plus fluide et sécurisée en permettant d’ouvrir des sessions isolées pour chaque contexte.

Avec Kubie, vous pouvez :

  • Passer d’un contexte Kubernetes à un autre sans modifier la configuration globale.
  • Changer de namespace de manière temporaire sans affecter d’autres sessions.
  • Travailler simultanément sur plusieurs clusters sans risque d’erreur.
  • Profiter d’une intégration fluide avec kubectl et les principaux shells (bash, zsh, fish).

Kubie est particulièrement utile pour les administrateurs système, les ingénieurs DevOps et toute personne gérant plusieurs clusters au quotidien.

Comparaison avec kubectx et kubens

Les outils kubectx et kubens sont souvent utilisés pour naviguer entre les contextes et namespaces. Cependant, ils modifient directement la configuration Kubernetes, ce qui peut être problématique dans certains cas.

FonctionnalitéKubiekubectx / kubens
Changement de contexte✔ Sessions temporaires✘ Modifie ~/.kube/config
Gestion des namespaces✔ Sessions isolées✔ Mais globalement modifié
Sécurité✔ Moins de risque d’erreur✘ Risque d’impacter d’autres sessions
Compatibilitékubectl, zsh, bash, fishkubectl, bash, zsh

En résumé, si vous travaillez avec plusieurs clusters et souhaitez éviter les erreurs de contexte, Kubie est une alternative plus robuste et sécurisée.

Installation de Kubie

Prérequis

Avant d’installer Kubie, assurez-vous d’avoir :

  • Un système Linux, macOS ou Windows (via WSL)
  • kubectl installé et configuré
  • Un accès aux fichiers de configuration Kubernetes (~/.kube/config)

Installation sous Linux

Sur Linux, vous pouvez installer Kubie en téléchargeant le binaire depuis le dépôt GitHub officiel.

  1. Téléchargez la dernière version stable :

    Terminal window
    curl -Lo kubie https://github.com/sbstp/kubie/releases/latest/download/kubie-linux-amd64
  2. Donnez les permissions d’exécution :

    Terminal window
    chmod +x kubie
  3. Déplacez-le dans un répertoire accessible (/usr/local/bin par exemple) :

    Terminal window
    sudo install kubie /usr/local/bin/
  4. Vérifiez l’installation :

    Terminal window
    kubie --version
    kubie 0.24.1

Configuration de Kubie

Kubie propose plusieurs options de configuration permettant de personnaliser son comportement, notamment en ce qui concerne la gestion des contextes, l’affichage du prompt et la prise en charge des fichiers kubeconfig multiples.

Kubie utilise un fichier YAML pour sa configuration, situé par défaut dans :

Terminal window
~/.kube/kubie.yaml

Ce fichier permet de modifier l’affichage du prompt, le comportement des sessions et les chemins des fichiers kubeconfig.

Kubie affiche par défaut le contexte et le namespace actifs dans le prompt du terminal. Il est possible de modifier la couleur et le format via le fichier de configuration.

Exemple de personnalisation :

theme:
context: cyan # Couleur du contexte
namespace: yellow # Couleur du namespace
info: green # Couleur des informations supplémentaires

Avec cette configuration, le prompt ressemblera à :

Terminal window
[prod|monitoring] user@host:~$

Par défaut, Kubie n’impose pas de style mais ajoute simplement des informations au début du prompt existant.

Kubie permet d’utiliser plusieurs fichiers kubeconfig au lieu d’un seul fichier ~/.kube/config. Cela facilite l’organisation des configurations et évite d’avoir un fichier trop volumineux.

Les fichiers kubeconfig pris en charge par défaut sont :

kubeconfig_paths:
- ~/.kube/config
- ~/.kube/*.yml
- ~/.kube/*.yaml
- ~/.kube/configs/*.yml
- ~/.kube/configs/*.yaml
- ~/.kube/kubie/*.yml
- ~/.kube/kubie/*.yaml

Si vous souhaitez définir vos propres chemins, modifiez la section kubeconfig_paths dans ~/.config/kubie.yaml :

kubeconfig_paths:
- ~/k8s-configs/production.yaml
- ~/k8s-configs/staging.yaml
- ~/k8s-configs/dev.yaml

Avec cette configuration, Kubie utilisera uniquement les fichiers listés.

Kubie peut être configuré pour modifier son comportement à l’entrée et à la sortie d’une session.

Exemple :

on_enter:
exec: echo "Bienvenue dans une session Kubie !"
on_exit:
clear: true # Efface l'écran en quittant la session

Avec cette configuration :

  • Un message est affiché lorsqu’une session Kubie démarre.
  • L’écran est nettoyé (clear) à la fermeture de la session.

Par défaut, Kubie utilise le shell défini par l’utilisateur, mais il est possible d’imposer un shell particulier (bash, zsh, fish, etc.) :

shell: /bin/zsh

Cela garantit que Kubie utilise Zsh même si le shell par défaut du système est Bash.

Il est possible d’ajouter un timeout pour fermer automatiquement une session Kubie après un certain temps d’inactivité :

session_timeout: 30m # Ferme la session après 30 minutes

Cela permet d’éviter d’oublier une session ouverte trop longtemps.

Une fois les modifications apportées à ~/.config/kubie.yaml, vous pouvez tester la configuration en exécutant :

Terminal window
kubie edit-config # Ouvre le fichier de configuration dans l’éditeur par défaut
kubie lint # Vérifie si la configuration est valide

Ces commandes permettent de corriger rapidement les erreurs éventuelles et de s’assurer que la configuration est bien prise en compte.

Installation sous macOS

Sous macOS, l’installation est simplifiée grâce à Homebrew :

Terminal window
brew install kubie

Vérifiez ensuite la version installée :

Terminal window
kubie --version

Fonctionnalités de Kubie

  1. Isolation des contextes et des namespaces :

L’une des principales différences entre Kubie et kubectx/kubens est que Kubie n’altère pas le fichier kubeconfig global. Chaque session ouverte avec Kubie est totalement indépendante, ce qui évite les interférences entre terminaux.

Lorsqu’un utilisateur bascule vers un contexte Kubernetes, Kubie :

  • Crée un fichier kubeconfig temporaire contenant uniquement le contexte sélectionné.
  • Lance une nouvelle session shell où la variable KUBECONFIG est redirigée vers ce fichier temporaire.
  • Ne modifie pas ~/.kube/config, garantissant que les autres terminaux ne sont pas affectés.

Commandes associées :

Terminal window
kubie ctx <context> # Ouvre un shell dans le contexte donné
kubie ctx - # Revient au contexte précédent
kubie ns <namespace> # Change temporairement de namespace
kubie ns - # Revient au namespace précédent
  1. Modification du prompt pour plus de visibilité :

Kubie améliore la lisibilité en modifiant dynamiquement le prompt du terminal pour inclure le contexte et le namespace actifs.

Exemple :

  • Avant Kubie :

    Terminal window
    user@host:~$
  • Avec Kubie dans le contexte prod et le namespace monitoring :

    Terminal window
    [prod|monitoring] user@host:~$

Cette fonctionnalité évite les erreurs en affichant en permanence le bon environnement de travail.

  1. Support des fichiers kubeconfig séparés :

Gérer plusieurs clusters Kubernetes dans un unique fichier kubeconfig (~/.kube/config) peut vite devenir ingérable. Kubie permet d’utiliser plusieurs fichiers de configuration, ce qui facilite l’organisation.

Par défaut, Kubie cherche les fichiers kubeconfig dans ces emplacements :

Terminal window
~/.kube/config
~/.kube/*.yml
~/.kube/*.yaml
~/.kube/configs/*.yml
~/.kube/configs/*.yaml
~/.kube/kubie/*.yml
~/.kube/kubie/*.yaml

Kubie permet aussi la désambiguïsation des noms : chaque fichier kubeconfig peut contenir un cluster et un utilisateur portant le même nom, sans provoquer de conflits.

Exemple d’un fichier kubeconfig séparé :

clusters:
- name: my-cluster
cluster:
server: https://my-cluster.example.com
users:
- name: my-user
user:
token: my-token
contexts:
- name: my-context
context:
cluster: my-cluster
user: my-user
namespace: default
  1. Exécution directe de commandes avec kubie exec

Kubie permet d’exécuter des commandes Kubernetes dans un contexte et un namespace spécifiques sans changer la session en cours.

Exemples :

  • Exécuter une commande dans un contexte et un namespace donnés :

    Terminal window
    kubie exec my-cluster monitoring kubectl get pods
  • Exécuter une commande sur plusieurs contextes grâce aux wildcards :

    Terminal window
    kubie exec dev-* default kubectl get nodes
  • Arrêter l’exécution en cas d’échec (-e) :

    Terminal window
    kubie exec prod-* monitoring -e kubectl apply -f deployment.yaml

Cette fonctionnalité est particulièrement utile dans les scripts d’automatisation.

  1. Gestion avancée des fichiers de configuration :

Kubie permet également :

  • D’éditer un fichier kubeconfig spécifique sans chercher manuellement où il est stocké :

    Terminal window
    kubie edit <context>
  • De générer un fichier kubeconfig isolé pour un contexte donné :

    Terminal window
    kubie export my-context my-namespace

Ces options facilitent la gestion et la personnalisation des configurations Kubernetes.

  1. Mise à jour et vérification de Kubie :

Pour vérifier et mettre à jour Kubie vers la dernière version disponible :

Terminal window
kubie update

Cela permet de s’assurer que l’outil est toujours à jour avec les dernières fonctionnalités et corrections.

  1. Vérification et correction des fichiers kubeconfig avec kubie lint :

Kubie inclut un outil de validation des fichiers kubeconfig :

Terminal window
kubie lint

Cette commande permet de détecter les erreurs de configuration avant qu’elles ne posent problème lors de l’exécution des commandes Kubernetes.

Conclusion

Grâce à ses sessions isolées, son affichage clair du contexte, son support natif des fichiers kubeconfig multiples et ses commandes avancées (kubie exec, kubie edit, kubie lint), Kubie est un compagnon indispensable pour tout utilisateur de Kubernetes. Il permet de travailler en toute sécurité sur plusieurs clusters sans risque d’erreur, tout en restant simple et intuitif à utiliser.

Grâce aussi à son fichier de configuration flexible, Kubie permet d’adapter son comportement à vos besoins. Que ce soit pour personnaliser l’affichage, gérer plusieurs fichiers kubeconfig, ou automatiser certaines actions, la configuration de Kubie offre une grande souplesse pour optimiser votre workflow Kubernetes.