Comment changer rapidement de contexte Kubernetes avec Kubectx et Kubens

0
54

Kubectx et Kubens sont deux outils qui accélèrent votre expérience de gestion Kubernetes. Ils corrigent certaines des lacunes de Kubectl en rendant plus rapide et plus pratique le basculement entre les environnements de cluster.

Les deux commandes sont développées par le même auteur et regroupées dans un seul package. Kubectx modifie le contexte Kubernetes actif. Il s'agit de la combinaison de l'URL du serveur et des informations d'identification de l'utilisateur définissant le cluster auquel vous êtes connecté. Kubens bascule entre les espaces de noms au sein de ce cluster.

Pourquoi sont-ils utiles ?

Passer d'un cluster à l'autre à l'aide de Kubectl simple peut être fastidieux. Bien que l'outil prenne en charge quelques méthodes de changement de configuration, elles ne sont pas particulièrement rapides ou intuitives pour ce cas d'utilisation.

Une façon consiste à créer un fichier de configuration distinct pour chacun de vos clusters. Vous pouvez ensuite définir la variable d'environnement KUBECONFIG pour basculer entre eux :

$ KUBECONFIG=~/.kube/cluster-1.yml # Récupère les pods du cluster-1 $ kubectl get pods

Cela vous oblige à mémoriser le nom et le chemin de chacun de vos fichiers de configuration. Cela ne vous aide pas non plus à définir des espaces de noms, vous devez donc utiliser l'indicateur –namespace de Kubectl pour remplacer la valeur par défaut avec chaque commande.

Kubectl offre également une expérience de gestion de contexte intégrée. Cela vous permet de définir plusieurs clusters et informations d'identification utilisateur dans un seul fichier de configuration. Vous pouvez émettre des commandes kubectl pour basculer entre eux.

apiVersion : clusters v1 : – cluster : nom : demo-cluster insecure-skip-tls-verify : vrai serveur : https://127.0.0.1 utilisateurs : – nom : utilisateur de démonstration : certificat client : /path/to/cert client -key : /path/to/key contextes : – contexte : nom : demo-cluster-ns-1 cluster : demo-cluster utilisateur : demo namespace : first-namespace – contexte : nom : demo-cluster-ns-2 cluster : utilisateur demo-cluster : espace de noms demo : second-namespace

Ce fichier de configuration définit deux contextes. Ils se connectent tous les deux au même cluster à l'aide d'un seul ensemble d'informations d'identification. Les contextes sont configurés pour utiliser différents espaces de noms au sein du cluster.

# Obtient les pods dans le premier espace de noms au sein de demo-cluster $ kubectl config use-context demo-cluster-ns-1 $ kubectl get pods # Obtient les pods dans le second- espace de noms dans demo-cluster $ kubectl config use-context demo-cluster-ns-2 $ kubectl get pods

Il s'agit d'une expérience plus simple, mais elle reste relativement détaillée. Kubectx et Kubens éliminent toute la complexité, vous donnant de simples commandes courtes pour changer rapidement de contextes et d'espaces de noms.

# Récupère les pods dans le premier espace de noms dans demo-cluster $ kubectx demo-cluster-ns-1 $ kubectl get pods # Remplace l'espace de noms du contexte pour obtenir des pods dans second-namespace $ kubens second-namespace $ kubectl get pods

Installation des outils

Kubectx et Kubens sont distribués sous plusieurs formats différents. Vous pouvez télécharger des fichiers binaires précompilés simples à partir de la page des versions GitHub du projet, les installer à partir des référentiels de packages Apt, Pacman ou Homebrew, ou utiliser le gestionnaire de plugins de Kubectl, Krew. Nous allons nous concentrer sur Krew car c'est un bon moyen de travailler avec tous vos accessoires Kubectl.

Assurez-vous que Krew est installé et que vous pouvez utiliser la commande kubectl krew. Vous pouvez ajouter Krew à votre système à l'aide du script d'installation sur le site Web du projet.

Utilisez ensuite Krew pour installer les composants Kubectx et Kubens :

# Kubectx $ kubectl krew install ctx # Kubens $ kubectl krew install ns

Vous pouvez éventuellement activer la prise en charge de la complétion du shell pour Bash, Fish et Zsh en exécutant les scripts correspondants fournis dans le fichier README du projet.

Kubectl et Kubens sont également compatibles avec fzf pour générer des menus interactifs avec flou aide à la recherche. Cette intégration est automatiquement activée lorsque vous avez fzf dans votre PATH. Vous pouvez le désactiver en définissant la variable d'environnement KUBECTX_IGNORE_FZF sur 1.

Changer les contextes

La commande Kubectx est utilisée pour basculer entre les contextes Kubectl disponibles. Il prend le nom du contexte cible comme seul paramètre. Les contextes doivent déjà exister dans votre fichier de configuration Kubectl actif. Utilisez les commandes de configuration kubectl habituelles pour créer vos contextes avant d'utiliser la commande.

# Passez au premier contexte $ kubectx premier contexte $ kubectl get pods

kubectx est un wrapper autour de kubectl config use-context. Le contexte sera ciblé par toutes les commandes Kubectl suivantes jusqu'à ce que vous en sélectionniez une autre avec kubectx ou kubectl.

Kubectx accepte – comme nom de contexte pour revenir rapidement au contexte précédemment sélectionné. Cela correspond au comportement des outils CLI familiers comme cd et git, ce qui facilite le travail avec plusieurs contextes simultanément.

$ kubectx premier $ kubectx second $ kubectx – # Obtient les pods dans le premier contexte $ kubectl get pods

Kubectx peut également créer des alias pour vos contextes. Ceux-ci vous permettent de référencer des noms de contexte descriptifs à l'aide d'une balise plus pratique.

$ kubectx production=gce-web-app-production-2022 # Passe à gce-web-app-production-2022 $ kubectx production $ kubectl get pods

Modifier les espaces de noms

kubens bascule entre les espaces de noms. Cela a le même effet que de changer l'espace de noms du contexte actif. Les commandes Kubectl seront exécutées sur l'espace de noms spécifié, dans le contexte actuellement sélectionné.

$ kubectx production $ kubens api # Récupère les pods dans l'espace de noms “api” du contexte “production” $ kubectl get pods

Comme pour kubectx, vous pouvez utiliser – pour revenir à votre espace de noms précédent :

$ kubens –

Migrating to Kubectx and Kubens From KUBECONFIG

Les contextes Kubectl, Kubectx et Kubens fonctionnent mieux lorsque vous stockez tous vos contextes et clusters dans un seul fichier Kubeconfig. Il se trouve généralement dans ~/.kube/config. Si vous avez déjà travaillé avec plusieurs fichiers de configuration, vous pouvez les fusionner à l'aide de Kubectl :

# Référencez tous vos fichiers de configuration pour que Kubectl les charge tous $ export KUBECONFIG=~/.kube/cluster-1:~/.kube/cluster-2:~/.kube/cluster-3 # Enregistrez une version fusionnée de la configuration actuelle vers un nouveau fichier $ kubectl config view –flatten > ~/.kube/.config

Mettre vos contextes dans un seul ~/.kube/config les rend tous disponibles pour kubectx et kubens. Vous pouvez arrêter d'utiliser KUBECONFIG pour jongler manuellement avec plusieurs fichiers.

Lorsque vous ajoutez un nouveau cluster à votre flotte, vous pouvez combiner son fichier de configuration avec votre existant en utilisant une variante de la séquence indiquée ci-dessus :

$ export KUBECONFIG=~/.kube/config:~/new-config- fichier $ vue de configuration kubectl –flatten > ~/.kube/.config

Une autre option plus simple est le gestionnaire de fichiers de configuration konfig, disponible en tant que plugin Kubectl via Krew. Cela inclut une commande d'importation qui fusionne automatiquement un nouveau fichier de configuration dans celui que Kubectl utilise actuellement :

$ kubectl krew install konfig $ kubectl konfig import -s ~/new-config-file

Résumé

Kubectx et Kubens sont deux utilitaires pratiques pour rationaliser votre expérience Kubectl. Bien que les contextes Kubectl conviennent à une utilisation occasionnelle, ils ont toujours tendance à sembler maladroits lorsque vous changez rapidement d'environnement. Kubectx et Kubens vous aident à inspecter plusieurs clusters et espaces de noms sans être gêné par de longues commandes de terminal.

L'attrait de ces outils réside dans leur simplicité. Ils ajoutent également quelques fonctionnalités uniques en plus de Kubernetes’ la gestion du contexte, comme le retour rapide en arrière avec – et l'alias de contexte pour raccourcir les noms longs.

LIRE LA SUITE

  • › "Atari était très, très dur" Nolan Bushnell sur Atari, 50 ans plus tard
  • &rsaquo ; Examen de PrivadoVPN : perturber le marché ?
  • &rsaquo ; Ces gadgets bannissent les moustiques
  • &rsaquo ; Les 10 meilleurs films originaux de Netflix en 2022
  • › Combien coûte la recharge d'une batterie ?
  • &rsaquo ; Jusqu'où peut aller une voiture électrique avec une seule charge ?