Sommaire
Introduction
Dans l’article Les outils incontournables pour accélérer votre utilisation de K8s !, nous avons découvert l’utilisation de K9s permettant de gérer votre cluster Kubernetes tout en restant dans votre terminal. Lorsque vous avez plusieurs clusters à gérer et que vous souhaitez avoir une vue à la fois globale et détaillée sur l’ensemble de vos clusters, K9s n’est pas vraiment l’outil idéal. Dans ce cas, nous allons préférer Lens.
Lens est une interface graphique pour Kubernetes, il est open source et permet de faciliter la gestion de plusieurs clusters à la fois.
Dans cet article, nous allons installer Lens sur un système d’exploitation Windows et y connecter les clusters GKE (Google Kubernetes Engine), EKS (Amazon Elastic Kubernetes Service) et AKS (Azure Kubernetes Service).
L’objectif est de découvrir la démarche à suivre pour intégrer chacun de ces clusters dans Lens et d’explorer certaines fonctionnalités de l’outil.
Nous utiliserons pour chaque cloud provider, la ligne de commande CLI correspondante pour créer les clusters avec un accès administrateur.
Présentation de Lens
Lens peut prendre en charge des clusters dans des environnements on-premises et des environnements cloud. Il est possible de passer d’un cluster à un autre en 1 clic.
Pour connecter un cluster, il suffit de lui fournir le fichier kubeconfig (PATH/.kube/config) correspondant.
Lens fournit une vue détaillée des objets kubernetes (pods, déploiements, secrets, services …).
L’outil permet aussi d’avoir des statistiques en temps réel, de créer et modifier les objets Kubernetes et de se connecter aux pods. Pour en savoir plus sur les capacités de Lens, vous pouvez consulter la documentation officielle sur le site Lens Documentation.
Par ailleurs, il est possible de rajouter des plugins à l’outil pour des besoins spécifiques comme :
- le starboard : outil d’Aqua Security pour avoir une visibilité sur les vulnérabilités
- le Kubernetes Resource Map : outil de nevalla pour avoir une visualisation graphique des dépendances entre les ressources kubernetes
- le certificate info : outil communautaire qui permet d’obtenir des informations sur les certificats au sein des secrets.
Une liste des plugins possibles se trouve sur le site https://github.com/lensapp/lens-extensions.
Installation et Configuration
Pour notre démo, nous allons installer Lens et les outils CLI suivants :
- Kubectl : pour interagir avec les clusters kubernetes
- Google Cloud SDK Shell : pour interagir avec les ressources de la plateforme Google Cloud et en particulier GKE, on lui intégrera le plugin gke-gcloud-auth-plugin pour permettre l’authentification avec le cluster GKE
- AWS CLI : pour avoir accès et gérer les ressources AWS, dans notre cas EKS
- Eksctl : permet de créer plus facilement les clusters EKS
- Azure CLI : pour la gestion des ressources Azure et notamment AKS
Installation de Lens
Lens est téléchargeable selon votre OS sur le site https://k8slens.dev/.
Pour notre démo, nous choisissons l’exécutable Windows x64 (.exe).
L’installation est très rapide et l’étape suivante consiste à créer un Lens ID. Notre choix a été d’utiliser le compte Google pour se connecter : le Lens ID est alors le nom du compte Google sans la partie @adresse_domain. Pour finaliser l’installation, il faudra aussi choisir une subscription :
Nous avons choisi la version FREE de Lens, ce qui permet d’activer le compte et d’accéder à l’interface de l’outil :
Installation des outils CLI
Kubectl
En fonction de votre OS, vous trouverez le guide d’installation de kubectl sur la page Install Tools | Kubernetes. Pour Windows, nous avons téléchargé le fichier kubectl.exe et ajouté sa localisation dans le PATH de Windows.
Pour vérifier la bonne installation, il faut taper dans un cmd :
kubectl version --client
Google Cloud SDK Shell
Google détaille les étapes à suivre pour l’installation de son CLI sur la page Install the gcloud CLI. Sur windows, il suffit de télécharger le .exe et de suivre les instructions d’installation. Il est ensuite nécessaire de configurer le Google Cloud CLI en lançant la commande :
gcloud init
Un navigateur s’ouvre et vous permet de choisir le compte google avec lequel vous voulez vous connecter. Pour finaliser, il faudra valider les autorisations nécessaires.
Dans l’interface, gcloud vous affichera la liste des projets disponibles dans votre compte et le numéro correspondant à chacun d’eux. Il vous demandera ensuite d’entrer le numéro du projet sur lequel vous voulez travailler et si vous souhaitez configurer une Région ou une Zone par défaut.
De plus, pour permettre l’interaction entre kubectl et les clusters GKE, le plugin gke-gcloud-auth-plugin doit être installé (Install kubectl and configure cluster access | Google Kubernetes Engine (GKE)).
Lancer dans le Google Cloud SDK Shell, la commande suivante :
gcloud components install gke-gcloud-auth-plugin
Une fois l’installation terminée, on peut vérifier la version du plugin avec :
gke-gcloud-auth-plugin --version
AWS CLI
AWS CLI peut s’installer sur différents types d’OS (Installing or updating the latest version of the AWS CLI - AWS Command Line Interface). Pour windows, nous avons téléchargé et exécuté le fichier AWSCLIV2.msi. La bonne installation de l’exécutable se vérifie dans un cmd avec la commande :
aws --version
La prochaine étape consiste à configurer le compte d’accès aux ressources AWS. Vous devez disposer d’un compte avec suffisamment de droit pour créer et gérer les clusters EKS. Pour notre démo, nous avons créé un compte avec les droits administrateurs sur la console AWS. Le compte doit aussi pouvoir accéder à la plateforme AWS en ligne de commande, avec un Access Key ID et Secret Access Key. Pour cela, il faudra cocher la case Access key - Programmatic access au moment de créer le compte dans l’IAM :
En local, sur votre PC, lancer dans un cmd la commande :
aws configure
Renseigner ensuite l’Access Key ID, le Secret Access Key et optionnellement le Default region name et le Default output format.
Pour vérifier que la configuration est bien correcte, lancer la commande suivante :
aws sts get-caller-identity
Eksctl
L’outil eksctl permet de créer et gérer plus facilement les clusters EKS. Il utilise un template CloudFormation pour mettre en place tous les composants nécessaires au cluster EKS.
Son guide d’installation se trouve à la page Installing or updating eksctl - Amazon EKS. Dans notre cas, nous utilisons, l’utilitaire Chocolatey pour l’installer, avec la commande suivante :
choco install -y eksctl
Pour vérifier la bonne installation :
eksctl version
Azure CLI
Selon votre OS, vous trouverez les instructions d’installation d’Azure CLI sur le site Azure Command-Line Interface (CLI) - Overview | Microsoft Learn. Pour windows, il suffit de télécharger et d’exécuter le fichier Azure CLI.
Pour vérifier que l’outil est bien installé, on peut taper dans un terminal CMD la commande :
az version
L’étape suivante consiste à configurer le compte d’accès aux ressources AZURE.
La commande qui permet de le faire est la suivante :
az login
Un navigateur s’ouvre et vous demande de choisir le compte d’accès à utiliser.
Création des clusters et intégration dans Lens
GKE
Il existe deux types de cluster GKE :
- Autopilot : automatiquement préconfiguré et géré par Google
- Standard : offre plus de flexibilité avec la possibilité de personnaliser la configuration sous-jacente du cluster
Pour cette démo, nous choisissons de créer un cluster de type autopilot.
Dans le shell Google Cloud SDK, nous créons le cluster avec la commande :
gcloud container clusters create-auto CLUSTER_NAME --region REGION --project=PROJECT_ID
Remplacer les paramètres CLUSTER_NAME par le nom de votre cluster, REGION par la région dans laquelle vous voulez créer le cluster et PROJECT_ID par l’ID de votre projet.
Nous créons un cluster nommé gke-cluster dans la région us-central1 :
Pour pouvoir connecter gke-cluster à Lens, il faudrait récupérer le fichier kubeconfig du cluster. A la création du cluster, la commande gcloud crée automatiquement le fichier dans C:\Users\nom_user\.kube\config. Si le cluster existe déjà sur la plateforme GCP, son fichier kubeconfig peut être récupéré avec la commande :
gcloud container clusters get-credentials CLUSTER_NAME --region=REGION
Cette commande récupère la configuration du cluster et crée le fichier C:\Users\nom_user\.kube\config.
Pour intégrer le cluster dans Lens, il faut rajouter ce fichier au niveau de Catalog->Clusters.
Le cluster apparaît en état disconnected. Il faut ensuite double cliquer dessus pour le connecter.
EKS
Pour créer des clusters EKS sur AWS, il est possible de choisir le type de nodes avec les options suivantes :
- Fargate : permet de déployer son application tout en délégant la gestion des nodes à AWS.
- Managed nodes : avec la possibilité de configurer le type de nodes du cluster.
Pour notre démo nous optons pour l’option Fargate.
Dans un cmd, nous créons le cluster EKS avec la commande :
eksctl create cluster --name my-cluster --region region-code --fargate
Le paramètre my-cluster est le nom de votre cluster et region-code la région dans laquelle vous voulez créer le cluster. Dans notre cas, nous créons le cluster eks-cluster dans la région us-east-1 :
Une fois la création du cluster terminée, eksctl modifie automatiquement le fichier C:\Users\nom_user\.kube\config pour ajouter le context du nouveau cluster eks.
Pour un cluster déjà existant sur AWS, la récupération de son fichier kubeconfig est possible avec la commande :
aws eks --region region-code update-kubeconfig --name my-cluster
Il est recommandé de modifier le fichier en ajoutant le chemin complet de l’exécutable aws, dans la section users :
command: C:\PATH\aws.exe
Le cluster eks-cluster apparaît automatiquement dans Lens dans la section Catalog->Clusters. Il faut ensuite double cliquer dessus pour le connecter.
AKS
Contrairement à GKE et EKS, Azure ne propose qu’un seul type de création de clusters kubernetes, avec la possibilité de choisir la configuration des nœuds. La commande permettant de créer le cluster AKS est la suivante :
az aks create -g myResourceGroup -n myAKSCluster --enable-managed-identity --node-count 1 --generate-ssh-keys
Les paramètres myResourceGroup et myAKSCluster sont à remplacer respectivement par le nom du groupe de ressources dans lequel vous voulez créer le cluster et le nom du cluster.
Nous créons le cluster aks-cluster avec 1 nœud pour notre étude.
La commande de création du cluster AKS ne met pas à jour automatiquement le fichier C:\Users\nom_user\.kube\config.
Pour intégrer la configuration du cluster aks-cluster, il faut lancer la commande :
az aks get-credentials --resource-group myResourceGroup --name myAKSCluster --file C:\Users\nom_user\.kube\config
Cette commande peut aussi être utilisée pour récupérer la configuration d’un cluster déjà existant sur le Cloud Azure.
Le fichier kubeconfig C:\Users\nom_user\.kube\config est alors modifié pour y intégrer les données du cluster aks-cluster. Il apparaît alors automatiquement dans Lens :
Exploration de Lens
Lens donne la possibilité de gérer les différents clusters créés dans la même interface et facilite la navigation d’un cluster à un autre. En ajoutant un accès rapide à chaque cluster sur la barre latérale gauche, on peut rapidement passer d’un cluster à un autre et y faire des actions :
Il donne une vue globale sur l’état des objets kubernetes. Chaque cluster a son propre terminal pour exécuter des commandes kubectl ou créer/modifier des fichiers de ressource yaml :
Pour créer de la charge sur les clusters et mieux explorer Lens, nous déployons sur chaque cluster une application nommée hello-server. L’application est constituée d’un pod et est exposée via un service de type LoadBalancer :
kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
kubectl expose deployment hello-server --type LoadBalancer --port 80 --target-port 8080
Pour chaque objet kubernetes, il est possible de créer/modifier/supprimer la ressource dans son namespace. Pour les pods, Lens donne la possibilité de s’y connecter et de consulter les logs :
Les déploiements se scalent très facilement en modifiant le nombre de replicas :
Nous pouvons aussi avoir une vision sur la consommation CPU et Mémoire des nodes du cluster :
Pour une présentation plus détaillée de Lens avec l’utilisation de plugins vous pouvez consulter l’article K8s Lens IDE on AWS/ACI EKS infrastructure -.
Intégration GKE vs EKS vs AKS dans Lens
Au niveau de l’installation des outils CLI, il y a plus d’outils à installer côté AWS. En effet, en plus d’AWS CLI, pour faciliter la création et gestion des clusters EKS, nous avons choisi d'installer eksctl. Ce dernier s’installe avec Chocolatey, qu’il faut aussi installer si vous ne l’avez pas déjà.
Concernant la gestion du fichier kubeconfig, les outils Google CLI et eksctl sont capables de le localiser et le mettre à jour automatiquement. Ce qui n’est pas le cas d’AKS CLI, qui a besoin qu’on lui spécifie la localisation du fichier avec l’option –file.
Pour eksctl, il ne renseigne pas le chemin complet de l’exécutable aws.exe dans le fichier kubeconfig, or Lens a besoin de ce chemin pour se connecter au cluster.
A partir du moment où le fichier kubeconfig est correct, Lens arrive à gérer les différents clusters de manière totalement équivalente.
Conclusion
De manière générale, les différents Cloud providers choisis dans cet article fournissent une documentation assez claire pour la création des clusters kubernetes et l’installation de leurs outils CLI. Grâce à Lens, la gestion de ces clusters devient plus facile avec une interface graphique conviviale. Cependant, d’autres outils graphiques comme le Dashboard Kubernetes, Octant ou encore Headlamp existent et peuvent vous fournir des vues détaillées de vos objets kubernetes.
Ressources
- Lens Documentation
- https://k8slens.dev/
- https://github.com/lensapp/lens-extensions
- Install Tools | Kubernetes
- Install the gcloud CLI
- Install kubectl and configure cluster access | Google Kubernetes Engine (GKE)
- Installing or updating the latest version of the AWS CLI - AWS Command Line Interface
- Installing or updating eksctl - Amazon EKS
- Azure Command-Line Interface (CLI) - Overview | Microsoft Learn
- K8s Lens IDE on AWS/ACI EKS infrastructure