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.
Sommaire
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
, --kubeconfig
ou 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.