Comment changer rapidement de contexte Kubernetes avec Kubectx et Kubens
Agence web » Actualités du digital » Comment simplifier la gestion de Kubernetes avec les contextes Kubectl

Comment simplifier la gestion de Kubernetes avec les contextes Kubectl

Les contextes Kubectl sont un mécanisme permettant de basculer rapidement entre différents clusters, utilisateurs et espaces de noms au sein de la CLI. Ils facilitent le déplacement entre plusieurs environnements sans modifier votre fichier de configuration Kubectl actif.

Dans cet article, nous montrerons comment vous pouvez utiliser Kubectl pour créer, gérer et sélectionner différents contextes. Assurez-vous que Kubectl est installé avant de continuer.

Qu’est-ce qu’un contexte ?

Les contextes encapsulent l’ensemble des paramètres qui permettent une connexion réussie à un cluster Kubernetes. Un contexte peut inclure l’URL du cluster, un ensemble d’informations d’identification utilisateur et l’espace de noms à cibler par défaut.

En l’absence de contextes, les environnements Kubernetes uniques sont souvent gérés en créant un fichier de configuration distinct pour chacun. Vous utilisez ensuite le --kubeconfig drapeau ou KUBECONFIG variable d’environnement pour charger le bon fichier à chaque fois que vous utilisez Kubectl :

$ export KUBECONFIG=.kube/cluster-1-user-1.yaml
$ kubectl get pods

Les contextes vous permettent de condenser les détails de tous vos environnements dans un seul fichier de configuration. Vous pouvez utiliser la valeur par défaut .kube/config pour chacun de vos clusters, en éliminant les drapeaux CLI et les variables d’environnement. Kubectl inclut des commandes pour basculer son contexte actif entre les options que vous avez créées.

Préparation aux contextes

Les contextes sont gérés à l’aide de la kubectl config groupe de commandement. Comme pour tout le reste dans Kubectl, votre liste de contextes disponibles sera chargée et enregistrée dans votre fichier de configuration actif. Celle-ci est déterminée par KUBECONFIG, --kubeconfigou la valeur par défaut .kube/config.

Pour commencer à utiliser les contextes, vous devez ajouter quelques clusters et informations d’identification à votre fichier de configuration. Vous pouvez utiliser d’autres kubectl config commandes pour les configurer :

# Create two cluster connections, qa and prod
$ kubectl set-cluster qa --server=https://192.168.0.1 --insecure-skip-tls-verify
$ kubectl set-cluster prod --server=https://192.168.0.2 --insecure-skip-tls-verify

# Create two credential pairs
$ kubectl set-credentials qa-user --username=demo --password=demoP@ss_qa
$ kubectl set-credentials prod-user --username=demo password=demoP@ss_prod

Maintenant, votre fichier de configuration contient les détails de connexion pour deux clusters Kubernetes distincts. Il contient également deux paires d’informations d’identification. Nous allons ensuite créer un contexte pour lier les clusters à leurs informations d’identification respectives. Vous pourrez ensuite utiliser une commande Kubectl pour passer de l’environnement QA à l’environnement de production.

Création d’un contexte

La kubectl config set-context La commande ajoute de nouveaux contextes à votre fichier de configuration. Vous devez spécifier un nom pour votre contexte. Utilisez les indicateurs de la commande pour référencer un cluster et un compte d’utilisateur précédemment ajoutés.

# Create contexts for the clusters added earlier
$ kubectl config set-context qa-context --cluster=qa --user=qa-user
$ kubectl config set-context prod-context --cluster=prod --user=prod-user

À ce stade, vous pouvez exécuter le kubectl config view commande pour inspecter toutes les modifications apportées à votre fichier de configuration :

apiVersion: v1
kind: Config
current-context: ""
clusters:
  - cluster:
    name: qa
      server: https://192.168.0.1
      insecure-skip-tls-verify: true
  - cluster:
    name: prod
      server: https://192.168.0.2
      insecure-skip-tls-verify: true
contexts:
  - context:
    name: qa-context
      cluster: qa
      user: qa-user
  - context:
    name: prod-context
      cluster: prod
      user: prod-user
users:
  - name: qa-user
    user:
      username: demo
      password: demoP@ss_qa
  - name: prod-user
    user:
      username: demo
      password: demoP@ss_prod

Les définitions de contexte pointent vers d’autres types d’objets définis ailleurs dans le fichier de configuration.

Sélection et utilisation des contextes

Les contextes sont sélectionnés avec la kubectl context use-context commande:

$ kubectl context use-context qa-context

Le nom du contexte actif est stocké en tant que valeur du current-context dans votre fichier de configuration Kubectl. Toutes les commandes Kubectl cibleront le cluster référencé par le contexte sélectionné.

# Connects to the https://192.168.0.1 cluster as demo:demoP@ss_qa
$ kubectl get pods

# Switch the active context
$ kubectl config use-context prod-context

# Connects to the https://192.168.0.2 cluster as demo:demoP@ss_prod
$ kubectl get pods

La possibilité de changer rapidement l’environnement cible dans Kubectl vous aide à vous déplacer entre les clusters sans être submergé par les indicateurs de configuration.

Étant donné que le contexte sélectionné persiste jusqu’à ce qu’un autre soit sélectionné, vous devez vérifier que Kubectl cible l’environnement que vous attendez avant d’exécuter des commandes destructrices. Utilisez le current-context commande pour voir le nom du contexte sélectionné :

$ kubectl config current-context
prod-context

Vous pouvez afficher tous les contextes dans votre fichier de configuration actuellement chargé avec get-contexts:

$ kubectl config get-contexts
CURRENT   NAME          CLUSTER   AUTHINFO  NAMESPACE
          qa-context    qa        qa-user
*         prod-context  prod      prod-user

Inclure des informations d’espace de noms avec des contextes

Jusqu’à présent, nous avons utilisé des contextes pour sélectionner un cluster et un compte utilisateur. Les contextes peuvent également inclure des informations d’espace de noms. Lorsqu’un contexte a un espace de noms attribué, les commandes Kubectl incluront automatiquement le --namespace drapeau. Vous pouvez toujours utiliser --namespace manuellement pour remplacer l’espace de noms défini par le contexte.

$ kubectl config set-context production-api --cluster=prod --user=prod-user --namespace api

$ kubectl config use-context production-api

# Gets Pods in the "api" namespace within the "prod" cluster
$ kubectl get pods

Il n’y a pas de limite au nombre de contextes que vous pouvez avoir. Les clusters peuvent apparaître dans plusieurs contextes, ce qui vous permet de définir des contextes distincts pour chacun de vos espaces de noms importants. Cela évite la répétition des --namespace flag lorsque vous inspectez différentes ressources dans votre cluster.

Renommer et supprimer des contextes

Renommer les contextes à l’aide de la rename-context commande:

$ kubectl config rename-context qa-context testing-context

Pour supprimer un contexte, passez son nom au delete-context commande:

$ kubectl config delete-context testing-context

Le cluster, l’utilisateur et l’espace de noms référencés par un contexte sont modifiés en répétant la set-context commande avec le même nom de contexte. Vous pouvez également apporter des modifications en modifiant manuellement votre fichier de configuration Kubectl.

Rendre le changement de contexte encore plus facile

La gestion de contexte intégrée de Kubectl peut être suffisante lorsque vous changez de cluster de manière relativement peu fréquente. Cependant, si vous changez constamment de cluster tout au long de votre journée, le relativement verbeux use-context la commande peut commencer à se sentir répétitive.

Kubectx est un plugin Kubectl qui peut rendre les changements de contexte encore plus faciles. Il raccourcit use-context et ajoute quelques fonctionnalités supplémentaires :

# Equivalent to "kubectl config use-context prod-context"
$ kubectx prod-context

En fonction de votre flux de travail, vous souhaiterez peut-être également continuer à utiliser plusieurs fichiers de configuration Kubectl. Vous pouvez utiliser des alias de shell et des variables d’environnement par défaut pour configurer un flux de travail personnalisé qui sélectionne automatiquement un fichier de configuration et un contexte pour chaque nouvelle fenêtre de terminal.

Sommaire

Les contextes Kubectl sont un moyen d’encapsuler plusieurs connexions de cluster logique dans un seul fichier de configuration. Chaque contexte se voit attribuer une URL de cluster, un compte d’utilisateur et un espace de noms. Les commandes Kubectl cibleront le cluster du contexte sélectionné à l’aide des informations d’identification référencées.

Vous pouvez configurer des contextes avec kubectl config set-context ou en modifiant manuellement votre .kube/config dossier. Kubectl inclut également des commandes pour gérer les connexions de cluster nommées et les comptes d’utilisateurs que vous pouvez référencer dans vos contextes.

★★★★★