Comment changer rapidement de contexte Kubernetes avec Kubectx et Kubens
Agence web » Actualités du digital » Comment changer rapidement de contexte Kubernetes avec Kubectx et Kubens

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 gitce 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 à kubectxvous 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.

★★★★★