Boostez Kubernetes avec ces outils géniaux

Photo of author

By pierre



Cet article explore un ensemble d’outils remarquables conçus pour enrichir et amplifier les capacités de Kubernetes.

Dans l’écosystème DevOps, l’importance d’outils performants pour automatiser et simplifier les tâches manuelles est cruciale. Un large éventail de ces outils est disponible pour chaque phase du cycle de vie DevOps, offrant diverses fonctionnalités.

Kubernetes est devenu un élément central dans le domaine DevOps, en particulier pour les applications exécutées dans des conteneurs. De nombreux outils peuvent être utilisés conjointement avec Kubernetes pour améliorer sa gestion, sa sécurité, son observation et sa capacité de surveillance. Ces instruments apportent une valeur ajoutée significative à vos clusters Kubernetes.

Voici une sélection de ces outils qui dynamisent et perfectionnent votre environnement Kubernetes.

Entrons dans le vif du sujet!

Helm

Helm est un gestionnaire de paquets pour Kubernetes qui simplifie le déploiement d’applications et de services réutilisables. Il permet de rechercher, partager et utiliser des logiciels spécifiquement conçus pour Kubernetes.

Helm utilise des « charts » pour définir, installer et mettre à jour des applications Kubernetes complexes.

Caractéristiques de Helm :

  • Gère la complexité des applications Kubernetes via des charts
  • Facilite les mises à jour grâce à des stratégies de mises à niveau et des « hooks » personnalisés
  • Permet un partage aisé de charts, qu’ils soient publics ou privés
  • Offre une fonction de restauration simplifiée grâce à une commande unique
  • Améliore la productivité des développeurs et la préparation opérationnelle

Flagger

Flagger est un opérateur de livraison progressive pour Kubernetes.

Il automatise la promotion de déploiements « Canary » à l’aide de services comme Istio, App Mesh, Nginx, Linkerd, Contour, Gloo et Skipper pour la gestion du trafic, et utilise Prometheus pour l’analyse Canary. Cette méthode de déploiement consiste à introduire de nouvelles versions auprès d’un petit groupe d’utilisateurs, puis de les déployer à plus grande échelle une fois les tests validés.

Flagger s’appuie sur le maillage de service en cours d’exécution dans votre cluster pour gérer le trafic entre les différentes versions de déploiement. Pour rediriger le trafic vers la version « Canary », il surveille des indicateurs clés tels que le temps de réponse moyen, le taux de succès des requêtes HTTP et l’état des pods.

Flagger peut automatiser l’analyse, la promotion et la restauration d’applications selon diverses stratégies de déploiement telles que Canary, les tests A/B et le déploiement bleu/vert.

Kubewatch

Kubewatch est un observateur Kubernetes open-source qui envoie des notifications via Slack.

Développé par Bitnami Labs en Go, il surveille les ressources Kubernetes et envoie des alertes lors de changements.

L’installation de Kubewatch se fait via `kubectl` ou des charts Helm. Il est facile à utiliser et prend en charge d’autres plateformes de communication comme HipChat, Mattermost, Flock, webhook et SMTP.

Les ressources que Kubewatch doit surveiller sont configurées dans un fichier ConfigMap, en utilisant les valeurs `true` ou `false`. Une fois Kubewatch configuré et exécuté comme un pod, vous recevrez des notifications sur les événements Kubernetes.

Gitkube

Gitkube est un outil permettant de construire et déployer des images Docker sur Kubernetes via `git push`. Il comprend trois composants : Remote, gitkube-controller et gitkubed. Remote contient des ressources personnalisées gérées par gitkube-controller, qui envoie les modifications à gitkubed. Ce dernier construit l’image Docker et la déploie.

Fonctionnalités de Gitkube :

  • Installation simple et rapide
  • Fournit un contrôle d’accès basé sur les rôles pour la sécurité
  • Authentification facile via une clé publique
  • Support de plusieurs espaces de noms pour la multi-location
  • Dépendances limitées à `kubectl` et `git`

kube-state-metrics

kube-state-metrics est un service qui génère des métriques d’état des objets en interrogeant l’API Kubernetes. Il est utilisé pour surveiller l’état des nœuds, pods, espaces de noms et déploiements, fournissant des données brutes non traitées issues de l’API Kubernetes.

Informations fournies par kube-state-metrics :

  • État des tâches Cron
  • État des pods (prêt, en cours d’exécution, etc.)
  • Demandes de ressources et leurs limites
  • Capacité et état des nœuds
  • Spécifications des ReplicaSets

Kamus

Kamus est un outil GitOps open-source pour le chiffrement et le déchiffrement de secrets pour les applications Kubernetes. Les secrets chiffrés par Kamus sont uniquement déchiffrables par les applications s’exécutant sur le cluster Kubernetes. Il utilise AES, Google Cloud KMS et Azure KeyVault pour le chiffrement. Kamus peut être configuré via un tableau de bord.

Kamus est composé de deux utilitaires : Kamus CLI et Kamus init container. Le CLI est utilisé pour s’intégrer avec l’API de chiffrement et le conteneur d’initialisation avec l’API de déchiffrement.

Les secrets Kubernetes simples ne sont que codés en base64 et ne sont pas chiffrés. Les conserver ainsi sur Git n’est pas sûr car quiconque a accès au dépôt peut les utiliser. Par conséquent, des solutions comme Kamus sont nécessaires pour un chiffrement/déchiffrement approprié. Il fournit également un modèle de menaces pour renforcer la sécurité des secrets.

Untrak

Untrak est un outil open source utilisé dans Kubernetes pour identifier et éliminer les ressources non suivies. Il vous permet de détecter et supprimer les fichiers qui ne sont plus suivis par votre système de gestion de configuration.

Après avoir injecté des manifestes dans votre pipeline CI/CD via `kubectl apply` ou Helm, Kubernetes ne sait pas quand un objet est supprimé du référentiel. Ces objets ne sont alors plus suivis lors du processus de livraison et peuvent rester sur le cluster.

Untrak utilise un fichier de configuration `untrak.yaml` pour trouver les ressources qui ne sont plus gérées par votre code source.

Weave Scope

Weave Scope est conçu pour visualiser, surveiller et dépanner Docker et Kubernetes.

Il offre une vue d’ensemble de votre application conteneurisée et de son infrastructure, ce qui facilite l’identification et le diagnostic des problèmes.

La gestion d’architectures de microservices dans des conteneurs Docker est complexe. Les composants sont dynamiques et difficiles à contrôler. Weave Scope aide à détecter les fuites de mémoire, contrôler la consommation du processeur et identifier les goulots d’étranglement du réseau.

Caractéristiques de Weave Scope :

  • Surveillance en temps réel des conteneurs Docker
  • Navigation simple entre les processus exécutés dans les conteneurs
  • Affichage de l’utilisation du processeur et de la mémoire par hôte ou service
  • Possibilité de redémarrer, arrêter ou suspendre des conteneurs via une CLI intégrée
  • Support de plugins personnalisés pour obtenir plus de détails sur les conteneurs, processus et hôtes

Kubernetes Dashboard

Kubernetes Dashboard est une interface web fournie par Kubernetes. Elle est utilisée pour déployer, dépanner et gérer les applications conteneurisées. Elle fournit une vue d’ensemble des informations du cluster, incluant les détails sur les nœuds, espaces de noms, rôles et charges de travail.

Vous pouvez déployer Kubernetes Dashboard via des charts Helm ou en utilisant la commande `kubectl` ci-dessous :

kubectl apply -f https://raw.githubusercontent.com/kubernetes/dashboard/v2.0.4/aio/deploy/recommended.yaml

Kops

Kops, pour Kubernetes Operations, est un projet open source conçu pour simplifier la configuration de clusters Kubernetes prêts pour la production. Il est principalement utilisé pour déployer des clusters Kubernetes sur AWS et GCE.

La création et la gestion de petits clusters Kubernetes sont relativement simples, mais l’ajout de configurations supplémentaires lors de l’expansion rend la gestion opérationnelle plus complexe. Kops aide à résoudre ces problèmes en adoptant une approche basée sur la configuration, assurant que le cluster reste à jour et sécurisé.

Kops propose de nombreux backends de mise en réseau, permettant de configurer facilement différents types de clusters selon les besoins.

cAdvisor

cAdvisor est un outil open source de surveillance de conteneurs. Il permet d’analyser les performances et l’utilisation des ressources des conteneurs.

Il fonctionne au niveau du nœud, détecte automatiquement tous les conteneurs en cours d’exécution et collecte des statistiques sur la mémoire, le système de fichiers, le processeur et le réseau. Une interface web fournit un affichage en temps réel des données de tous les conteneurs du cluster.

Pour commencer avec cAdvisor, exécutez l’image Docker `google/cadvisor` et accédez à l’interface via `http://localhost:8080` dans votre navigateur.

Kubespray

Kubespray est un outil gratuit basé sur des playbooks Ansible et Kubernetes. Il est utilisé pour la gestion du cycle de vie d’un cluster Kubernetes.

Kubespray permet un déploiement rapide du cluster et la personnalisation de tous les paramètres d’implémentation, tels que les modes de déploiement, les plugins réseau, la configuration DNS, les versions des composants et les méthodes de génération de certificats.

L’exécution d’un simple `ansible-playbook` mettra votre cluster en fonction. Kubespray permet de faire évoluer et mettre à niveau votre cluster Kubernetes.

K9s

K9s est un outil open source basé sur un terminal, offrant toutes les fonctionnalités d’une interface web Kubernetes. Il permet de naviguer, observer et gérer les applications déployées sur votre cluster.

Caractéristiques de K9s :

  • Surveillance en temps réel de votre cluster
  • Personnalisation de l’affichage par ressource
  • Identification des problèmes de ressources de cluster
  • Support du contrôle d’accès basé sur les rôles
  • Benchmarks intégrés pour valider les performances des ressources

Kubetail

Kubetail est un script bash simple qui permet d’agréger les logs de plusieurs pods dans un seul flux.

C’est un outil très pratique!

Il facilite le débogage.

La dernière version de Kubetail offre des fonctionnalités de mise en évidence et de filtrage des logs. L’installation via Homebrew est simple et rapide. Vous pouvez ajouter des valeurs par défaut dans les variables d’environnement que Kubetail peut lire, telles que `KUBETAIL_NAMESPACE`, `KUBETAIL_TAIL` et `KUBETAIL_SKIP_COLORS`.

PowerfulSeal

PowerfulSeal est un puissant outil open source d’ingénierie du chaos, écrit en Python, pour les clusters Kubernetes.

L’ingénierie du chaos permet d’évaluer la résilience du système en injectant des pannes afin de vérifier sa capacité à gérer des situations problématiques en production.

Inspiré par Chaos Monkey de Netflix, PowerfulSeal vise à améliorer la résilience de Kubernetes. Les ingénieurs utilisent cet outil pour délibérément créer des défaillances sur le cluster et analyser la réaction du système.

PowerfulSeal fonctionne en trois modes : autonome, interactif et par étiquette.

Le mode autonome exécute des scénarios définis dans un fichier de stratégie. Le mode interactif vous informe sur les composants que vous essayez de perturber manuellement. Le mode par étiquette vous permet de cibler des objets spécifiques sur le cluster, comme des pods, grâce à des étiquettes.

Popeye

Popeye est un utilitaire de nettoyage qui agit comme un « désinfectant » 🧼 pour les clusters Kubernetes.

Il analyse l’ensemble du cluster et signale les problèmes liés aux configurations et aux ressources, vous aidant à appliquer les meilleures pratiques pour éviter les erreurs courantes.

Cet utilitaire est compatible avec Windows, Linux et macOS et fonctionne avec les nœuds, pods, espaces de noms et services. Il permet d’identifier les ressources inutilisées, les problèmes de ports, les configurations RBAC, l’utilisation des métriques, etc.

Conclusion

Les outils DevOps sont essentiels pour réussir, et j’espère que cette présentation vous aidera à mieux gérer vos environnements Kubernetes.