Cloud platform

J'auto-héberge une plateforme Docker + Portainer + Elastic qui me sert à la fois pour des usages personnels et professionnels. Je la documente dans cette section.

Architecture

Le nombre de noeuds qui composent cet plateforme est variable en fonction des besoins.

Il s'agit d'une plateforme hybride qui compte des serveurs localisés à la fois dans le cloud mais aussi hébergés physiquement dans diverses localisations.

Ces noeuds sont différents à la fois au niveau hardware et software.

De manière non exhaustive :

  • Plusieurs serveurs dans le cloud dont un serveur central / coordinateur. J'utilise principalement Debian / Ubuntu.

  • Des serveurs physiques hébergés localement avec différentes topologies hardware (x86_64 & ARM 32 et 64bits).

Applications / Services

De nombreuses applications tournent sur ces différents serveurs, d'autant plus que la plateforme elle-même permet d'héberger d'autres applications (via Docker par exemple) dont nous ne parlerons pas dans cette documentation.

Le coeur de la plateforme est composé des applications suivantes :

  • Docker + Portainer (Server, Agent, Edge Agent)

  • Elastic stack

    • Elasticsearch

    • Kibana

    • Logstash

    • Beats agents (Filebeat, Metricbeat, Hearthbeat)

Objectifs de cette plateforme

Comme je le disais plus haut, cette plateforme répond à des besoins personnels et professionnels.

  1. Pour la partie stack Elastic, elle me permet notamment d'effectuer le monitoring système (logs & metrics) des différents serveurs que j'administre. Ces données me servent à la fois pour effectuer des démonstrations de l'utilisation de la stack Elastic avec des données réelles mais me permettent également de monitorer pro-activement les serveurs de manière à garantir la bonne santé des applications hébergées. Bien entendu, le dashboarding, reporting & alerting font partie des fonctionnalités principales que j'utilise dans cette optique.

  2. Pour la partie Docker / Portainer, elle me permet de mettre à disposition une solution clé en main pour héberger efficacement des applications (comme mon site personnel par exemple) mais elle me permet également de fournir à des proches une solution clé en main pour déployer des applications, des environnements de test ou des plateformes de développement. Ceci cumulé au fait que la stack Elastic est présente pour le monitoring tout cela, l'environnement est donc relatviement complet et permet de se mettre rapidement en jambe sur divers projets.

Objectifs de cet espace de documentation

L'objectif principale de cette documention est, comme toujours, d'avoir une trame écrite de la construction de cette plateforme. Cela me permettrait, notamment en cas de crash ou d'un besoin de réinstallation complète d'avoir une trame claire et relativement détaillée pour la remettre en place.

Cette documentation n'a pas vocation à vous permettre de reproduire mon installation, de toute façon je pense que cela n'est pas vraiment possible dans la mesure ou cela est adapté à mon cas particulier.

L'objectif secondaire serait éventuellement de recenser des blocs d'instructions réutilisables indépendamment de l'architecture globale. Un exemple concret : si demain j'ai besoin d'ajouter ou de réinstaller un Raspberry Pi dans la plateforme, je peux suivre cette trame. Je peux également passer cette documentation à un proche qui souhaiterait connecter son Raspberry Pi à ma plateforme.

Petit aparté sur ce point, un des principaux intérêts de cette plateforme est d'avoir un Portainer Server centralisé ainsi qu'une stack Elastic à jour et maintenue prête à l'emploi. De ce fait, et c'est encore plus flagrant sur un Raspberry, vous réalisez une installation du serveur coordinateur, vous y ajoutez des Portainer Agent et des agents Beats et vous pouvez ensuite utiliser le serveur central dans le cloud bien plus performant et rapide pour déployer (Portainer web) et monitorer (Elastic via Kibana) votre serveur.

Last updated