k9s speedrun any% unrestricted wg+ WR

Tags :
  • MON
  • 2024-2025
  • temps 2
  • dev
  • kubernetes
  • k9s
Auteurs :
  • Loïck Goupil-Hallay

MON avancé

Liens utiles

Introduction

Tout DevOps qui se respecte est amené à travailler avec un orchestrateur de conteneurs: Kubernetes. Il doit être capable de naviguer dans les ressources de son cluster afin de débugger, déployer, ou simplement observer ce qui s'y passe. La CLI kubectl est très puissante, mais elle n'est pas forcément la plus ergonomique pour toutes les opérations du quotidien. On y passe beaucoup de temps dès qu'il faut faire quoi que ce soit. Afin de gagner en productivité, il existe un outil formidable d'interface graphique en CLi pour Kubernetes : k9s.

Dans ce MON, nous allons voir comment devenir un maître de k9s, afin de ne plus jamais perdre de temps pour nos opérations de tous les jours.

k9s default view

Cas d'usage

Nous allons nous baser sur un exemple concret de déploiement de service (SonarQube) sur un cluster Kubernetes, en passant par une helm chart. L'idée est de suivre le workflow de déploiement complet afin de s'assurer que le déploiement fonctionne sans encombre. En cas de problème, nous devrons être capables de débugger rapidement et efficacement, uniquement avec k9s.

Nous allons supposer que k9s est déjà installé sur votre machine sans plugins. Si ce n'est pas le cas, vous pouvez suivre les instructions sur le site officiel.
De plus nous allons supposer que vous avez un cluster Kubernetes fonctionnel, et que vous avez les droits pour déployer des ressources dessus. (Si ce n'est pas le cas, vous pouvez suivre le tutoriel d'installation de Kubernetes)

Enfin, nous n'expliquerons ni le fonctionnement de kubernetes et de ses ressources, ni d'une helm chart, ni le flow de déploiement de SonarQube. Si vous avez des questions sur ces sujets, n'hésitez pas à vous renseigner sur internet ou à me contacter.

Démarrage

Nous utiliserons la helm chart classique de bitnami pour déployer SonarQube, pour cela nous sommes obligés de passer par le terminal, k9s ne permettant pas l'intéraction avec la CLI helm. Nous déployons sur le namespace workspace-test

helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo update
helm install sonarqube bitnami/sonarqube --namespace workspace-test

Suivi du déploiement

A partir de maintenant, tout se passe sur k9s. Nous allons suivre le déploiement de SonarQube, et nous assurer que tout se passe bien. Pour cela, on doit globalement vérifier que la helm release arrive au statut DEPLOYED, que les pods sont en Running, et que les services sont bien vivants.
Pour cela, on va suivre 3 ressources principales:

SHIFT + 1 pour filtrer sur le namespace workspace-test

Events au déploiement, tout va bien

:events pour afficher les évènements du namespace workspace-test Events déploiement SonarQube

Pods en cours de démarrage

:pods pour afficher les pods du namespace workspace-test Pods démarrage SonarQube

On voit une première anomalie (classique), un des pods est prêt, l'autre est en Pending. Cela peut être normal dans le cas où le pod attend quelque chose pour démarrer. Cependant cela ne doit pas durer trop longtemps.

Malheureusement, un pod ne démarre pas

ENTER sur le pod en Pending pour voir les détails Failing containers

Catastrophe, tous nos conteneurs du pod SonarQube sont en erreur ! Il va falloir débugger ça.

Logs du pod

L pour afficher les logs du pod Logs pod SonarQube

Oh misère de misère ! Les logs sont complètement vides ! Que faire capitaine ?

Events

:events pour afficher les évènements du namespace workspace-test Events pod SonarQube

ENTER sur l'évènement pour voir les détails Event pod SonarQube

Enfin une information ! Le pod n'arrive pas à démarrer car il n'a pas assez de mémoire sur aucune des nodes à sa disposition. Il va falloir trafiquer notre cluster pour lui donner plus de mémoire. Il s'agit d'un cluster construit rapidement pour le MON à l'aide de Minikube. Il est donc normal que les ressources par défaut soient faibles.

minikube stop
minikube delete
minikube config set memory 6000
minikube start --memory=6000 --cpus=4

Problème résolu

:pods pour afficher les pods du namespace workspace-test Pods up

Cette fois-ci, plus de problème, on peut voir que nos pods sont vivants et ont fini de démarrer

Accès au service

  1. :services pour afficher les services du namespace workspace-test
  2. SHIFT + F pour effectuer un port forward entre le service et votre machine (pour pouvoir y accéder sur navigateur) Port forward

localhost:9000 sur un navigateur quelconque pour accéder à SonarQube SonarQube

Et voilà, votre SonarQube est accessible sur localhost:9000 !

Accès à la console

  1. :pods pour afficher les pods du namespace workspace-test
  2. /sonarqube pour filtrer sur les pods de SonarQube
  3. S pour ouvrir un shell dans le pod Shell SonarQube

Au besoin, vous avez accès à la console du conteneur pour effectuer des opérations de maintenance (en tant qu'administrateur bien sûr)

Conclusion

Vous avez réussi à déployer SonarQube sur votre cluster Kubernetes, et à le débugger en cas de problème. Vous avez pu voir l'efficacité de k9s pour naviguer dans les ressources de votre cluster, et pour débugger des problèmes en temps réel. Vous avez gagné un temps précieux en évitant de passer par la CLI kubectl pour chaque opération.

Comparez à votre ancien kubectl get, kubectl describe, kubectl logs... quand vous ne saviez pas où regarder. Vous avez facilement économisé 10 minutes de recherche et de commandes fastidieuses pour chaque problème rencontré.

Antisèche Raccourcis clavier

k9s étant un outil développé pour favoriser la rapidité utilisateur, il est truffé de raccourcis clavier qui permettent de changer de vue, éditer les composants, filtrer l'affichage, afficher des logs, lister des ressources, etc. Voici une petite liste que j'ai pu composer avec les raccourcis qui me sont les plus utiles.

Aide

Interaction avec les ressources

Interaction avec les pods

Gestion de l'affichage

Parcours et navigation

Accès

Tri

Filtrage

Droite, gauche, haut, bas