Comment changer rapidement de contexte Kubernetes avec Kubectx et Kubens
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 régler le KUBECONFIG
variable d’environnement pour passer de l’une à l’autre :
$ KUBECONFIG=~/.kube/cluster-1.yml # Gets pods in 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 Kubectl’s --namespace
flag pour remplacer la valeur par défaut avec chaque commande.
Kubectl propose é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 kubectl
commandes pour passer de l’une à l’autre.
apiVersion: v1 clusters: - cluster: name: demo-cluster insecure-skip-tls-verify: true server: https://127.0.0.1 users: - name: demo user: client-certificate: /path/to/cert client-key: /path/to/key contexts: - context: name: demo-cluster-ns-1 cluster: demo-cluster user: demo namespace: first-namespace - context: name: demo-cluster-ns-2 cluster: demo-cluster user: demo namespace: 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.
# Gets pods in first-namespace within demo-cluster $ kubectl config use-context demo-cluster-ns-1 $ kubectl get pods # Gets pods in second-namespace within demo-cluster $ kubectl config use-context demo-cluster-ns-2 $ kubectl get pods
Il s’agit d’une expérience plus simplifiée, mais elle reste relativement détaillée. Kubectx et Kubens éliminent toute la complexité, vous donnant de courtes commandes simples pour changer rapidement de contexte et d’espace de noms.
# Gets pods in first-namespace within demo-cluster $ kubectx demo-cluster-ns-1 $ kubectl get pods # Overrides the context's namespace to get pods in second-namespace $ kubens second-namespace $ kubectl get pods
Kubectx et Kubens sont distribués sous plusieurs formats différents. Vous pouvez télécharger des 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 le kubectl krew
commande. Vous pouvez ajouter Krew à votre système en utilisant le 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 l’achèvement du shell pour Bash, Fish et Zsh en exécutant les scripts pertinents fournis dans le fichier README du projet.
Kubectl et Kubens sont également compatibles avec fzf
pour générer des menus interactifs avec prise en charge de la recherche floue. Cette intégration est automatiquement activée lorsque vous avez fzf
dans ton PATH
. Vous pouvez le désactiver en réglant le KUBECTX_IGNORE_FZF
variable d’environnement à 1
.
Changer de contexte
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 régulièrement kubectl config
commandes pour créer vos contextes avant d’utiliser la commande.
# Switch to first-context $ kubectx first-context $ kubectl get pods
kubectx
est un emballage autour kubectl config use-context
. Le contexte sera ciblé par toutes les commandes Kubectl suivantes jusqu’à ce que vous en sélectionniez un autre avec soit 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 first $ kubectx second $ kubectx - # Gets the pods in the first context $ 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 # Switches to gce-web-app-production-2022 $ kubectx production $ kubectl get pods
Modification des 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 # Gets pods in the "api" namespace of the "production" context $ kubectl get pods
Similaire à kubectx
vous pouvez utiliser -
pour revenir à votre espace de noms précédent :
$ kubens -
Migrer vers Kubectx et Kubens depuis KUBECONFIG
Les contextes Kubectl, Kubectx et Kubens fonctionnent mieux lorsque vous stockez tous vos contextes et clusters dans un seul fichier Kubeconfig. Celui-ci est généralement situé à ~/.kube/config
. Si vous avez déjà travaillé avec plusieurs fichiers de configuration, vous pouvez les fusionner à l’aide de Kubectl :
# Reference all your config files so Kubectl load them all $ export KUBECONFIG=~/.kube/cluster-1:~/.kube/cluster-2:~/.kube/cluster-3 # Save a merged version of the current config to a new file $ kubectl config view --flatten > ~/.kube/.config
Mettre vos contextes en un seul ~/.kube/config
les met tous à la disposition de kubectx
et kubens
. Vous pouvez cesser 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-file $ kubectl config view --flatten > ~/.kube/.config
Une autre option plus simple est la konfig
gestionnaire de fichiers de configuration, disponible en tant que plugin Kubectl via Krew. Cela comprend un import
commande 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
Sommaire
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 la gestion de contexte de Kubernetes, telles que le retour en arrière rapide avec -
et alias de contexte pour raccourcir les noms longs.