Blog ENI : Toute la veille numérique !
🚀 PROLONGATION : Jusqu'à -30% sur tous les
livres en ligne, vidéos & e-formations. Cliquez ici
💥 Interessé(e) par un accès illimité à
tous nos livres & vidéos, sur l'IA, le dev, les réseaux... ? Cliquez ici
  1. Livres et vidéos
  2. Kubernetes
  3. Contextes et outils tiers Kubernetes
Extrait - Kubernetes Gérez la plateforme de déploiement de vos applications conteneurisées (3e édition)
Extraits du livre
Kubernetes Gérez la plateforme de déploiement de vos applications conteneurisées (3e édition) Revenir à la page d'achat du livre

Contextes et outils tiers Kubernetes

Objectifs du chapitre et prérequis

Kubernetes est un outil relativement complexe. Avant d’aller plus loin dans la mise en place de clusters, vous allez découvrir quelques outils intéressants à utiliser en cas de problème ou pour vous simplifier la vie.

En premier lieu, la notion de contextes sera abordée ainsi que la présentation d’outils pour les manipuler (kubectx, kubens, kube-ps1). Du temps sera également consacré à ajouter du contexte dans l’invite de l’utilisateur pour savoir rapidement sur quel cluster vous êtes en train de travailler.

Viendra ensuite une présentation de différents outils permettant de vous faciliter les choses, comme la surveillance de l’état des pods ou la capture du trafic réseau d’un conteneur.

Gestion des contextes avec kubectl

1. Origine du besoin

Avant de tester des clusters Kubernetes de différentes origines, il est intéressant de comprendre comment est stockée l’information de connexion en local, ceci afin de :

  • pouvoir facilement passer d’un cluster à un autre ;

  • stocker l’information quelque part (pour l’archiver, par exemple).

2. Lister les contextes

Au lancement de Minikube, le lecteur a créé un contexte par défaut : minikube.

Un bon moyen de s’en rendre compte est d’utiliser la commande kubectl suivie de l’option config et du mot-clé get-contexts :

$ kubectl config get-contexts 

Dans le cas où vous auriez configuré un accès à minikube ainsi qu’un cluster créé chez Google, la sortie pourrait ressembler à ce qui suit :

CURRENT   NAME         CLUSTER       AUTHINFO       NAMESPACE 
          gke-test     gke-test      gke-test   
*         minikube     minikube      minikube 

Toujours avec l’option config, la sous-option current-context permet de récupérer le champ NAME du contexte par défaut :

$ kubectl config current-context 

Dans le cas où minikube serait le contexte par défaut, la commande renverra le résultat suivant :

minikube 

3. Variable d’environnement KUBECONFIG

a. Spécifier l’emplacement du fichier

La variable d’environnement KUBECONFIG permet de faire cohabiter plusieurs clusters. Cette dernière permet de spécifier un fichier différent de celui par défaut (~/.kube/config).

L’export de la variable d’environnement se fait de la manière suivante :

$ export KUBECONFIG=~/kubeconfig/cluster-prod 

 Consultez à nouveau les contextes vus par la commande kubectl :

$ kubectl config get-contexts 

Les contextes sont différents de la fois précédente :

CURRENT   NAME         CLUSTER      AUTHINFO     NAMESPACE 
*         hp-a.ex.com  hp-a.ex.com  hp-a.ex.com 

b. Spécifier plusieurs fichiers

À noter que la variable KUBECONFIG se comporte comme la variable...

Utilitaires Kubernetes

1. Krew : gestionnaire d’extensions

a. Présentation du mécanisme d’extensions

La commande kubectl permet, un peu de la même manière que Git, d’être étendue à l’aide d’extensions (plugins). Pour cela, il faut créer un fichier commençant par « kubectl » suivi d’un tiret (-) et du mot-clé de l’extension.

 Pour une extension hello qui afficherait un message à l’utilisateur, créez le fichier /usr/local/bin/kubectl-hello avec le contenu suivant :

#!/bin/sh  
echo hello from Kubectl plugin 

 Rendez le contenu de ce fichier exécutable :

$ sudo chmod +x /usr/local/bin/kubectl-hello 

 Puis, pour tester l’extension, lancez l’appel suivant :

$ kubectl hello 

La commande doit alors renvoyer le message suivant :

hello from Kubectl plugin 

b. Installation de Krew

Ce mécanisme d’extension est particulièrement intéressant, mais la création d’extensions demande un certain savoir-faire. L’extension Krew est là pour gérer la mise à disposition d’extensions par la communauté.

L’installation de cette extension se fait en exécutant le shell suivant :

(  
 set -x; cd "$(mktemp -d)" &&   
 OS="$(uname | tr '[:upper:]' '[:lower:]')" &&   
 ARCH="$(uname -m | sed -e 's/x86_64/amd64/' -e 's/ 
\(arm\)\(64\)\?.*/\1\2/' -e 's/aarch64$/arm64/')" &&   
 KREW="krew-${OS}_${ARCH}" &&   
 curl -fsSLO "https://github.com/kubernetes-sigs/krew/releases/ 
latest/download/${KREW}.tar.gz" &&   
 tar zxvf "${KREW}.tar.gz" &&   
 ./"${KREW}" install krew   
) 

 Sauvegardez ce fichier sous le nom install-krew.sh puis exécutez-le de la manière suivante :

$ sh install-krew.sh 

En fin d’installation, le shell vous indiquera d’ajouter la ligne suivante dans votre shell courant (~/.zshrc pour zsh ou ~/.bashrc pour bash) :

export PATH="${KREW_ROOT:-$HOME/.krew}/bin:$PATH"...