dimanche , 19 mai 2019
Home » Tutoriel » 19 outils pour apprivoiser les déploiements de Kubernetes

19 outils pour apprivoiser les déploiements de Kubernetes

Tirez parti de ces outils Kubernetes pour simplifier les définitions d’applications, améliorer la surveillance, faciliter les déploiements dans le cloud, etc.

Kubernetes est devenu un moyen standard – beaucoup diraient le moyen standard – de déployer des applications conteneurisées à grande échelle. Mais, si Kubernetes nous aide à apprivoiser les déploiements de conteneurs tentaculaires et complexes, que nous reste-t-il pour apprivoiser Kubernetes ? Cela aussi peut être complexe, désordonné et difficile à gérer.

À mesure que Kubernetes grandit et évolue, il est probable que certains de ses excès seront apprivoisés de l’intérieur. Mais, certaines personnes n’attendent pas que Kubernetes soit plus facile à utiliser et ont mis au point leurs propres solutions à de nombreux problèmes courants liés au Kubernetes en production.

Nous allons parler de 19 projets qui simplifient Kubernetes de différentes manières : de la simplification des interactions en ligne de commande, la simplification de la syntaxe de déploiement d’application, l’intégration à AWS, à la création d’une fenêtre dans plusieurs clusters.

Il est intéressent de commencer par lire notre tutoriel sur comment Comment créer un cluster Kubernetes (Partie 1) et la partie 2

Bitnami Cabin : Le tableau de bord Kubernetes pour iOS et Android

Aucune application ou service Web moderne ne devrait être dépourvu d’interface mobile. Cabin fournit aux administrateurs Kubernetes une version du tableau de bord Kubernetes accessible depuis un smartphone iOS ou Android. De nombreuses fonctions disponibles dans le tableau de bord complet de Kubernetes peuvent être lancées à partir de Cabin, notamment les diagrammes de Helm, les déploiements de dimensionnement, la lecture des journaux de pods et l’accès aux applications Web hébergées par Kubernetes.

Goldpinger : Visualisez les clusters Kubernetes

Les humains sont des créatures visuelles. Les graphiques et les tableaux facilitent la compréhension de la situation dans son ensemble. Et compte tenu de la portée et de la complexité d’un cluster Kubernetes, nous pourrions utiliser toute l’aide visuelle que nous pouvons obtenir.

Le nom amusant de Goldpinger, issu de la technologie de Bloomberg, est un outil simple qui s’exécute dans un cluster Kubernetes et affiche une carte interactive des relations entre les nœuds. Les nœuds normaux apparaissent en vert tandis que les nœuds ayant des problèmes sont en rouge.

Cliquez simplement sur un nœud pour voir plus de détails. Vous pouvez personnaliser l’API avec Swagger pour intégrer des rapports, des métriques ou d’autres intégrations supplémentaires.

Kedge : définitions concises de déploiement dans Kubernetes

La plainte la plus courante à propos de Kubernetes est la complexité et la verbosité de ses manifestes, ou définitions d’application. Ils ont du mal à écrire et à maintenir, il n’est donc pas étonnant que les gens se tournent vers des outils tiers pour moins compliquer la tâche.

Kedge propose une syntaxe plus simple et plus concise. Vous fournissez la version simple du fichier de définition de Kubernetes à Kedge, qui étend cette définition simple à son équivalent complet, Kubernetes.

Contrairement à Koki Short (voir ci-dessous), Kedge n’utilise pas de syntaxe modulaire pour ses fichiers de déclaration. En effet, il résume simplement les définitions d’applications à des raccourcis courants.

Koki Short : Les manifestes Kubernetes gérables

Koki Short – comme Kedge ci-dessus – est un projet visant à améliorer le fonctionnement des définitions d’application, ou les manifestes, dans Kubernetes. Comme les définitions de Kedge, les définitions courtes utilisent une syntaxe abrégée pour décrire les modules Kubernetes qui peuvent être traduits dans la syntaxe complète, puis inversement.

Contrairement aux définitions de Kedge, les définitions courtes sont également modulaires, ce qui signifie que les détails d’une déclaration brève peuvent être réutilisés dans d’autres, de sorte que de nombreux modules avec des éléments communs puissent être définis de manière succincte.

Kops : Les opérations en ligne de commande pour les clusters Kubernetes

Développé par l’équipe Kubernetes, Kops vous permet de gérer les clusters Kubernetes à partir de la ligne de commande. Il prend en charge les clusters exécutés sur AWS et GCE, avec VMware vSphere et d’autres environnements en préparation. En plus de l’automatisation du processus de configuration et de désassemblage, Kops s’appuie sur d’autres types d’automatisation.

Par exemple, il peut générer des configurations Terraform pour permettre à un cluster d’être redéployé à l’aide de Terraform.

Kubebox : Console de terminal pour Kubernetes

Un console de terminal avancée pour Kubernetes, Kubebox fournit plus qu’un simple shell enrichi à Kubernetes et à son API. Il fournit des affichages interactifs de l’utilisation de la mémoire et du processeur, des listes de pods, des journaux en cours d’exécution et des éditeurs de configuration. Mieux encore, il est disponible en tant qu’application autonome pour Linux, Windows et MacOS.

KubeDB : Exécuter des bases de données de production dans Kubernetes

Les bases de données ont toujours été difficiles à exploiter avec élégance dans Kubernetes. Et l’ensemble de fonctionnalités natif de Kubernetes ne résout pas directement de nombreux problèmes spécifiques aux bases de données.

KubeDB permet à un administrateur de créer des opérateurs Kubernetes pour gérer les bases de données. L’exécution de sauvegardes, le clonage, la surveillance, la capture instantanée et la création déclarative de bases de données font partie du mélange. La mise en cluster est également prise en charge, mais seulement sur certaines bases de données, par exemple, elle est disponible pour PostgreSQL, mais pas pour MySQL (pour le moment).

Kube-monkey : Chaos monkey pour Kubernetes

Un moyen sûr de tester un système est de casser des choses au hasard. C’est la théorie derrière Chaos Monkey de Netflix, un outil d’ingénierie du chaos qui termine de manière aléatoire les machines virtuelles et les conteneurs en cours de production pour « encourager » les développeurs à construire des systèmes plus résilients.

Kube-monkey est une implémentation de la même idée de base pour les tests de contrainte des grappes Kubernetes. Cela fonctionne en tuant au hasard des pods dans un cluster que vous avez spécifiquement désigné, et peut être ajusté pour fonctionner dans des fenêtres temporelles spécifiques.

Kube-ps1 : invite de commande Smart Kubernetes

Non, Kube-ps1 n’est pas un émulateur Sony PlayStation de première génération pour Kubernetes (bien que ce soit plutôt chichois). C’est un simple outil supplémentation à Bash qui affiche le contexte et l’espace de noms Kubernetes actuels dans l’invite. Kube-shell inclut cela avec de nombreuses autres fonctionnalités, mais si tout ce que vous voulez, c’est une invite plus intelligente, Kube-ps1 le fournit avec peu de temps système.

Kube-prompt : Client Kubernetes interactif

Une autre petite modification mais utile de la CLI de Kubernetes, Kube-prompt vous permet d’entrer ce que vous appelez une session de commande interactive avec le client Kubernetes. Kube-prompt vous évite d’avoir à taper kubectl pour préfixer chaque commande et fournit des informations contextuelles pour chaque commande.

Kube-shell : Shell pour la CLI de Kubernetes

La ligne de commande de Kubernetes est puissante, mais comme pour toute application de ligne de commande, il peut être fastidieux de choisir ses options. Kube-shell couvre la ligne de commande Kubernetes standard dans un shell intégré qui fournit la saisie et la suggestion automatiques des commandes courantes, y compris les suggestions fournies par le serveur Kubernetes (par exemple, les noms de services).

Il vous fournit également une fonction d’historique des commandes plus robuste, un mode d’édition de style Vi et des informations de contexte en cours d’exécution pour les utilisateurs, l’espace de noms, le cluster et d’autres détails spécifiques à l’installation.

Kubespy : surveillance en temps réel des ressources Kubernetes

Kubespy de Pulumi est un outil de diagnostic qui vous permet de suivre en temps réel les modifications apportées à une ressource Kubernetes. Vous disposez ainsi d’une sorte de tableau de bord avec affichage du texte. Par exemple, vous pouvez voir les modifications apportées au statut d’un pod au démarrage : la définition du pod en cours d’écriture dans Etcd, le pod programmé pour s’exécuter sur un nœud, le Kubelet sur le nœud créant le pod et le pod qui est finalement marqué comme étant en cours d’exécution. Kubespy peut fonctionner en tant que binaire autonome ou en tant que plugin pour Kubectl.

Kubernetes Ingress Controller for AWS

Kubernetes fournit un équilibrage de charge externe et des services réseau à un cluster via un service appelé Ingress. Amazon Web Services fournit une fonctionnalité d’équilibrage de charge. Toutefois, il ne couple pas automatiquement ces services aux installations de Kubernetes. Kubernetes Ingress Controller for AWS ferme cet espace.

Ingress Controller gère automatiquement les ressources AWS pour chaque objet Ingress dans un cluster. Il crée des équilibreurs de charge pour les nouvelles ressources en entrée. Il supprime les équilibreurs de charge des ressources supprimées. Et ce en faisant appel à AWS CloudFormation pour assurer la cohérence du cluster.

Il gère également automatiquement d’autres éléments utilisés dans le cluster:  les certificats SSL et les groupes EC2 Auto Scaling.

Kube-ops-view : Le tableau de bord pour plusieurs clusters Kubernetes

Kubernetes dispose d’un tableau de bord utile pour la surveillance générale. Malgré ça, la communauté Kubernetes expérimente d’autres moyens de présenter des données utiles à l’administrateur de Kubernetes. Kube-ops-view est une de ces expériences. Il fournit une vue globale et rapide de plusieurs clusters Kubernetes. Ces derniers sont représentés graphiquement, permettant ainsi de visualiser d’un coup d’œil l’utilisation du processeur et de la mémoire, ainsi que l’état des modules d’un cluster.

Notez que cela ne vous permet pas d’appeler des commandes ; c’est strictement pour la visualisation. Mais, les visualisations qu’il fournit sont saisissantes et efficaces : elles sont conçues pour un moniteur mural dans votre centre d’opérations.

Skaffold : Le développement itératif pour Kubernetes

Skaffold est l’un des outils propres à Google pour Kubernetes, un moyen d’effectuer un déploiement continu pour les applications Kubernetes. Lorsque vous apportez des modifications à votre code source, Skaffold les détecte automatiquement. Ensuite déclenche le processus de construction et de déploiement et vous avertit si des erreurs se produisent.

Skaffold fonctionne entièrement du côté client. Il peut être utilisé dans un pipeline CI/CD existant. Il s’intègre à quelques outils de construction externes, principalement celui de Google, Bazel.

Stern et Kubetail : Journal de bord pour Kubernetes

Stern vous permet de produire une sortie codée par couleur (conformément à la commande tail) à partir de pods et de conteneurs dans Kubernetes. C’est un moyen rapide de canaliser toutes les sorties de plusieurs ressources. Cette canalisation se fait dans un seul flux pouvant être lu en un coup d’œil. En même temps, vous avez un moyen rapide (le code couleur) de distinguer les flux.

De même, Kubetail regroupe les journaux de plusieurs pods en un seul flux, codant par couleur les différents pods et conteneurs. Mais, Kubetail est un script Bash, il n’exige donc rien de plus qu’un shell.

Teresa : Une simple PaaS sur Kubernetes

Teresa est un système de déploiement d’application qui s’exécute comme un simple PaaS sur Kubernetes. Les utilisateurs, organisés en équipes, peuvent déployer et gérer les applications qui leur appartiennent. Cela facilite un peu la tâche des personnes à qui on fait confiance avec une application donnée. Cela ne nécessitera pas le traitement directe de Kubernetes.

Tilt : Diffuse les mises à jour du conteneur vers les clusters Kubernetes

Développé par Windmill Engineering, Tilt surveille les modifications apportées aux fichiers Dockerfiles en temps réel, puis les déploie de manière incrémentielle dans les conteneurs appropriés d’un cluster Kubernetes. En substance, il permet aux développeurs de mettre à jour un cluster actif en temps réel. Il peut le faire simplement en mettant à jour un fichier Docker. Tilt effectue la construction à l’intérieur du cluster. Les seules modifications apportées sont le code source.

À lire aussi

Débuter avec CI/CD : automatisez la livraison de vos applications avec les pipelines CI/CD

CI/CD automatise les étapes d’intégration et de livraison d’applications et normalise les configurations d’applications. Voici …