Automatisation de l’orchestration en nuage avec Kubernetes

Ce Propulseur a été créé et la documentation rédigée par BigBitBus.

Les Propulseurs de l’ATIR sont des jeux structurés de ressources en nuage, documentation incluse, illustrant une technologie émergente. Offerts gratuitement, ils ont été conçus par des entreprises canadiennes d’expérience qui ont élaboré des produits ou des services au moyen de la technologie en question et ont accepté de partager leur savoir.

Aperçu

Kubernetes est devenu la plateforme de conteneurisation cloud-native d’élection pour les applications IT d’affaires. En effet, utilisé de la bonne façon, Kubernetes présente des avantages appréciables pour l’entreprise :

  • les applications en conteneur ne sont pas asservies à un nuage privé ou public particulier;
  • les flux de tâches normalisés et reproductibles, définis par un code, promeuvent de saines pratiques de DevOps ou de SecOps;
  • les opérations comme la mise à l’échelle, le déploiement, l’application de correctifs et la reprise au point de contrôle sont automatisées;
  • les couches sont surveillées et il y a déclenchement d’alertes ce qui permet une rétroaction et des améliorations continues;
  • l’infrastructure est mieux exploitée et il y a contrôle granulaire des coûts;
  • les tâches manuelles et les erreurs humaines sont moins nombreuses au niveau de l’infotechnologie et des opérations.

Installer ou acquérir une grappe Kubernetes n’a pas automatiquement de valeur commerciale. Bien qu’une organisation puisse installer Kubernetes de diverses manières dans un nuage public ou privé, voire sur un simple ordinateur, les développeurs et les responsables des opérations IT éprouvent souvent du mal à situer leur application et leurs processus dans Kubernetes.

Un flux de tâches de développement et de production Kubernetes qui ne fonctionne pas de façon optimale peut avoir un très lourd coût de renonciation pour l’entreprise, car le cycle de production s’en trouvera prolongé, des défaillances surgiront, la facture des services d’infonuagique s’en trouvera gonflée et on gaspillera des heures de travail onéreuses, l’équipe technique devant tout recommencer en essayant de comprendre comment déployer correctement le logiciel dans Kubernetes.

Malheureusement, maintes tentatives de conteneurisation échouent pour une seule et même raison : Kubernetes est complexe et maîtriser ce système de déploiement automatique peut s’avérer difficile. La Solution type du Propulseur aplanira une grande partie des difficultés liées à l’apprentissage et à l’usage de Kubernetes, ce qui permettra d’atteindre rapidement l’étape de la production.

La Solution type aborde les questions que voici.

  1. Installation et configuration d’une grappe Kubernetes à un nœud sur AWS ou Azure (à partir de la plateforme de l’ATIR) pour le développement et des essais
  2. Déploiement d’une application Web de type « liste de choses à faire » comprenant un composant frontal (Vue.js), un composant dorsal (cadriciel Restful de Django) et une base de données (PostgreSQL) sur Kubernetes
  3. Usage de formules Helm (Charts) rédigées par la communauté ou sur mesure afin de faciliter l’élaboration, l’installation et la mise à niveau des applications Kubernetes même les plus complexes et ainsi permettre le déploiement de logiciels et de composants dans la grappe
  4. Gestion du déploiement du logiciel dans la grappe Kubernetes, y compris gestion des images des conteneurs avec Skaffold.
  5. Activation du tableau de bord Kubernetes permettant de naviguer dans la grappe
  6. Ajout du système de surveillance de l’infrastructure avec la pile Prometheus qui comprend les tableaux de bord Grafana
  7. Configuration du composant d’entrée NGINX afin de rendre le service de la grappe accessible de l’extérieur
  8. Illustration de la gestion des secrets et de la configuration de l’application
  9. Fonctionnalités évoluées comme la limitation des ressources, la mise à l’échelle automatique et les espaces de nommage
  10. Discussion de quelques écueils et remèdes aux problèmes les plus courants avec Kubernetes

L’illustration qui suite montre l’application (en rouge) et les principaux composants de Kubernetes ainsi que les principes cloud-native que le Propulseur KAT met en relief.

Ressources

BigBitBus a publié sur GitHub un projet de source ouverte intitulé Kubernetes Automation Toolkit. (trousse d’automatisation Kubernetes). Le dépôt GitHub étant la meilleure source d’information qu’on puisse trouver, puisque la documentation y est mise à jour régulièrement, nous vous recommandons de vous y référer pendant que vous mettez le Propulseur KAT à l’essai. Nous vous suggérons également de visiter le dépôt de codes et de documents afin de vous familiariser davantage avec les principes Kubernetes, glaner des conseils avisés et parcourir la documentation la plus récente.

https://GitHub.com/BigBitBusInc/kubernetes-automation-toolkit

Kubernetes est un projet ouvert de la CNCF (Cloud Native Computing Foundation). Il est très bien documenté et divers aspects de Kubernetes ont engendré un vaste assortiment de formations gratuites ou payantes. Les ressources les plus pertinentes et les plus utiles sont les suivantes :

  • Documentation de Kubernetes : ressource numéro un, selon nous, que vous soyez un débutant ou un utilisateur aguerri
  • Helm : gestionnaire de paquets Kubernetes.
  • Prometheus et Grafana : système de surveillance de source ouverte conçu spécifiquement pour l’infonuagique
  • Microk8s : version autonome, de classe production, de Kubernetes pour l’infonuagique, les grappes, les postes de travail, Edge et l’IdO
  • Skaffold : flux de tâches normalisés permettant de bâtir, d’initialiser et de déployer une application

Tutoriels

Nous préconisons vivement que vous visitiez le dépôt de codes et de documentation du KAT afin de mieux maitriser les concepts de Kubernetes et de profiter des astuces qui émaillent ces documents.

https://GitHub.com/BigBitBusInc/kubernetes-automation-toolkit

Le tableau que voici dresse une liste partielle des tutoriels que l’auteur a trouvé particulièrement utiles.

TutorielRésumé
Tutoriels officiels de KubernetesIls présentent de nombreux aspects de Kubernetes. Mieux : certains permettent de tester une grappe Kubernetes virtuelle en nuage sur le terrain de jeu Katakoda avant l’installation du logiciel sur sa propre plateforme.
Tutoriels officiels de HelmHelm est le gestionnaire de paquets le plus populaire sur Kubernetes. Guide de démarrage rapide, instructions pour son installation et rudiments de son exploitation.
Pi Prep & Pi SuiteComment configurer un Raspberry Pi (3B ou plus récent) pour en faire une infrastructure BLE et afficher en temps réel tous les dispositifs détectés dans son rayon d’action.

En ce qui concerne les pratiques exemplaires, nous vous recommandons de consulter les sites Web officiels et les forums d’aide des composants que vous installerez sur la plateforme Kubernetes.

Documentation

Le tableau qui suit dresse la liste d’une série de documents sur la BLE RTLS.

DocumentRésumé
Principal fichier README de la trousse d’automatisation Kubernetes (KAT) de BigBiteBusFichier d’information à jour sur le code du Propulseur. Il comprend une brève introduction sur les conteneurs et les principaux concepts de Kubernetes. Nous recommandons vivement à l’utilisateur d’en prendre connaissance.
Fichier README et code de l’API To-Do de DjangoInterface dorsale To-Do en Python de Django et fichier README détaillé; comprend les formules Helm (Charts) déployées avec Skaffold.
Fichier README et code de l’application To-Do d’une page de Vue.jsApplication frontale To-Do installée dans Vue.js et fichier README; comprend les formules Helm (Charts) déployées avec Skaffold.
Fichier README sur la surveillance et le tableau de bord ainsi que les valeurs HelmFichier créé par la communauté Prometheus sur la surveillance de l’installation et de la configuration dans la grappe Kubernetes avec Prometheus et Grafana, à partir des formules Helm (Charts) usuelles.
Instructions pour une installation locale (sur une MV de l’ordinateur)Explications sur la façon d’installer KAT localement sur un ordinateur (idéal pour une plateforme de développement autonome)

Soutien

BigBitBus a publié sur GitHub un projet de source ouverte intitulé « Kubernetes Automation Toolkit (KAT) » rassemblant la documentation sur de nombreux problèmes éventuels. Si vous relevez un bogue ou avez une idée de la manière dont le code du Propulseur pourrait être amélioré, n’hésitez pas à nous en faire part dans le dépôt GitHub.

Si vous ne trouvez pas la réponse à votre question, posez-la-nous sur le canal Slack de l’ATIR ou envoyez-la à [email protected]

Pratiques exemplaires

  1. Kubernetes et la technologie « cloud-sative » évoluent constamment. Ne présumez pas que le projet est terminé une fois que vous aurez installé et utiliserez Kubernetes. L’équipe devra s’adapter, évoluer et innover constamment pour rester à jour et faire en sorte que les applications fonctionnent correctement dans l’univers Kubernetes.
  2. La puissance réside dans la communauté de la technologie cloud-native, de source ouverte, pas dans une entreprise ou chez le propriétaire d’un produit. Savoir comment obtenir de l’aide en faisant appel à la collectivité (par exemple, en ouvrant un sujet de discussion sur GitHub, en contribuant au projet par la suggestion d’un changement et en rapportant les bogues sur les projets de source ouverte) est une façon très efficace de poursuivre son périple dans Kubernetes.
  3. Les logiciels ou composants déployés ou modifiés dans Kubernetes devraient être définis sous forme de code (manifestes IaC YAML ou formules Helm, par exemple) et leur versionnage devrait être contrôlé avec Git ou un autre système de gestion de la chaîne d’approvisionnement, plutôt que par une modification de l’état de la grappe avec l’interface de la ligne de commandes.
  4. L’utilisateur devrait actualiser ses grappes Kubernetes et ses formules Helm car la technologie cloud-native ne cesse de se développer. Les API de Kubernetes, par exemple, sont régulièrement mises à jour sans rétrocompatibilité, de qui rend les anciennes formules Helm inutilisables.
  5. La solution type comprend une section « Ce que ne fait pas le Propulseur » qui vous aidera à bien en saisir les limites.

Trucs et hics

  1. Quand vous apprenez à utiliser Kubernetes ou à le déboguer, évitez que vos premières demandes d’aide portent sur des problèmes de type Stack Overflow (surcharge de la pile) ou sur GitHub. L’information présentée sur de nombreux forums pourrait soit sortir du contexte, soit être désuète ou, ce qui est pire, biaisée. Consultez d’abord la source officielle, car tous les projets de source ouverte qui ont bien fonctionné possèdent une bonne documentation à jour.
  2. Faites preuve de discernement. Vous trouverez sur Internet une foule de formules Helm à télécharger permettant d’installer pratiquement n’importe quoi dans la grappe Kubernetes. Ne pêchez pas par excès. N’installez quelque chose qu’après avoir répondu à ces trois questions :
  • En ai-je vraiment besoin?
  • Ai-je vérifié que la formule Helm émane d’une source fiable?
  • Puis-je revenir sans difficulté en arrière?

Vous n’installeriez pas le fichier exécutable d’un logiciel espion sur votre ordinateur, pas plus que vous ne cliqueriez sur un lien menant à un maliciel. Donc, n’installez pas de formules Helm inconnues dans votre infrastructure!

Le Propulseur « trousse d’automatisation Kubernetes » (KAT) illustre de A à Z comment bâtir et expédier un logiciel sur la plateforme Kubernetes.