docker

Proxy Squid chez Scaleway

Pour rappel j’utilise un proxy http squid sur un serveur chez Scaleway afin que les machine n’ayant pas d’IP publique puisse accéder à Internet, voir l’article Docker swarm chez Scaleway. Un oubli dans cet article concerne le passage des variables d’environnement dans les conteneurs. En effet des conteneurs peuvent avoir besoin d’accéder à une URL externe ou à un autre conteneur via une URL publique (exemple le drone agent vers le drone serveur).

Notification Drone avec Gotify

Gotify est un serveur de notification en Go. Il permet de lui envoyer via une API du json avec une simple requête curl ou depuis du code. Il propose une interface web pour créer des applications qui génère une token nécessaire à l’envoi des messages mais surtout une application android. Ainsi on pourra recevoir sur son téléphone des alertes et notifications envoyées par ses scripts et programmes. Drone L’idée est ici de l’utiliser pour l’ajouter dans un pipeline Drone afin d’être notifié du statut d’un déploiement.

Miniflux un serveur RSS

Suite à fathom, un autre un autre service me manquait, un serveur de RSS proposant une API pour un client mobile. En opensource il en existe plusieurs comme tt-rss ou freshrss mais comme toujours l’usinerie PHP/SGBD me rebute. C’est alors (encore :) que j’ai découvert miniflux un serveur en Go (anciennement en PHP). Malheureusement il demande comme les autres un SGBD ; comme je ne peux y échapper voici mes différentes étapes d’installation avec PostgreSQL sur ma stack docker swarm / glusterfs.

Stats Web Avec Fathom

Je recherchais depuis quelques temps un outils permettant de calculer et stocker les stats des visites sur mon site. Le plus connu en libre est semble t-il piwik devenu matomo mais la lourdeur de PHP/mysql me rebutait. J’ai tendance à privilégier autant que possible des services en Go, léger et rapide, avec une base sqlite. Ca tombe bien puisque j’ai découvert fathom qui répond exactement à ce “cahier des charges”.

Glusterfs Docker

Cet article présente l’installation du file system distribué glusterfs sur des serveurs ARM64 chez scaleway. L’objectif est d’y stocker les volumes docker pour qu’ils soient synchronisé entre tous les serveurs, ainsi si le swarm déplace un conteneur sur une autre machine physique, il retrouvera ses données. Cette solution est plus robuste que celle que j’utilisais avec syncthing. L’idéal serait de créer une partition XFS sur un disque dédié, cependant les ARM64v8 premier prix ne peuvent attacher plus de 50Go, le volume principal étant de 50go il faudrait passer à la gamme ARM64-4G.

Build Push Deploy

Sous ce titre, l’idée est de présenter un workflow de construction d’une image docker, sa publication et son déploiement depuis un simple git push grâce à Drone. Pour cela je vais utiliser un vieux projet en php toujours en vie : phpsysinfo Contexte Lorsqu’on souhaite utiliser Docker plusieurs étapes sont nécessaires avant d’arriver à la publication finale. Ecrire un Dockerfile Construire une image La publier sur un registre (le plus souvent le hub docker) Ecrire un docker-compose pour l’instancier sur son serveur.

Drone 1

Cet article présente succintement la nouvelle version de Drone 1 et les changements de configuration. Pour rappel Drone est un outil d’intégration et de déploiement continu. Tout d’abord l’interface web a bien évoluée, elle est très clair et agréable. Un pipeline peut maintenant être relancé depuis l’interface et le lien view source permet de pointer vers le commit qui l’a déclenché. la syntaxe du fichier pipeline .drone.yml a changé, elle se présente maintenant sous cette forme :

Docker swarm chez Scaleway

Cet article a pour but de présenter la préparation à la mise en place de docker swarm chez l’hébergeur Scaleway. Contexte Pour diverses raisons j’apprécie beaucoup Docker et même si je suis loin d’en connaitre encore toutes les subtilités il me permet de gérer quelques services comme mon blog ou un proxy irc. Parmis les solutions d’hébergement j’ai fini par me rapprocher de Scaleway car ils étaient (sont?) les premiers fournisseur de serveur baremetal en architecture ARM puis ARM64.

Docker Multi Stage Builds

Le multi-stage builds est une fonctionnalité très intéressante présente dans Docker depuis la release 17.05. Elle permet de décrire dans un dockerfile 2 images l’une à la suite de l’autre. La première image ne sert qu’à constuire les données nécessaires à l’utilisation de la deuxième. Par exemple pour un programme en golang on aura besoin que la première image possède le compilateur go, git, et diverses bibliothèques qui permettront de générer le binaire executable.

Isso un gestionnaire de commentaire avec Hugo et Docker

Suite à cette présentation de isso ( Installation d’une alternative open-source à Disqus) j’ai décidé de le mettre en place sur Hugo et docker swarm. J’ai pour cela créé un dockerfile de isso afin qu’il tourne sur mon infra ARM64 : https://github.com/fredix/dockerfile/tree/master/isso . Le fichier entrypoint.sh est directement pris de ce dépôt git : https://github.com/SISheogorath/isso-docker il faut ensuite le modifier afin de préciser les variables host et name. Dockerfile.arm64 FROM arm64v8/python:3.

déploiement continu avec drone sur ARM64

Cet article est une mise à jour du déploiement continu avec drone. Cette fois-ci l’idée est d’utiliser des serveurs en ARM64 disponible chez sacleway. J’utilise toujours une infra docker swarm comme présenté dans cet article auto-hébergement hybride mais à cause de certaines spécifités de l’ARM64 je vais repartir de zéro. Scaleway J’utilise des serveurs baremetal ARM64-2GB car pour le même prix qu’un VPS on a ici un quad core physique ce qui est bien plus efficace qu’une VM à mon sens.

un plugin drone pour telegram

Voici la suite de notre déploiement continu avec drone. Maintenant que tout fonctionne, on souhaite pouvoir lancer un git push et aller boire son café pépère pendant que drone build et déploie en production. Cependant il serait bien d’être alerté de la réussite ou pas de l’opération. Drone propose divers plugins pour cela, dont un pour Telegram. Les plugins Slack ou Hipchat sont sans doute plus connus pour informer une team via une notification, mais personnellement j’ai une préférence pour Telegram qui propose un excellent client desktop en plus des smartphones.

déploiement continu avec drone

Suite de l’article sur l’auto hébergement hybride , voici une présentation de l’outil de déploiement continu drone.io idéal pour déployer dans une infrastructure docker. Je vais prendre comme exemple de déploiement mon blog qui utilise hugo un serveur de blog statique (pas de sgbd) en Golang. Outre les avantages de go (un binaire statique, rapide, léger), il permet d’écrire ses pages au format makdown. La première partie avec un déploiement manuel puis celle automatisée avec drone.

auto-hébergement hybride

Dans la série sur Docker, voici un nouvel article sous un titre un peu étrange qui éveillera sans doute votre curiosité et c’est bien le but. Disclamer : cet article est tout frais la peinture n’est pas sèche, avec le temps son contenu sera modifié. Historique Pour les geeks sortant d’un caisson cryogénique, voici les 2 premiers lien expliquant ce qu’est l’auto-hébergement : auto-hebergement et sur wikipedia. En résumé cela consiste à héberger ses données sur ses machines personnelles chez soi au lieu de les stocker chez Google, Facebook, Apple, etc.

beego caddy docker

Voici un nouvel article sur Docker qui fait suite à docker et macos. Cette fois-ci un usage réel, avec le développement d’un simple site web statique déployé dans un conteneur docker et publié par le serveur web caddy. J’utilise un poste de travail sous Linux/Fedora avec les packages golang et docker de la distribution. Beego Beego est un framework web en Golang. Golang est un langage que j’apprécie énormement, il fera peut être l’objet d’un article mais on peut le résumer en ces quelques termes : compilé, statique (binaire non dynamique), multiplateforme (windows,mac,linux), multiarchitecture (X86, ARM) , très performant, simple, efficace, concurrent ; go by example donne des exemples du langage et pour des exemples web https://gowebexamples.

Docker et MacOS

Cet article débute sans doute une série dédiée à Docker. En effet aucun admin sys et développeur n’a pu ignorer l’existence de cette technologie en train de révolutionner notre métier. Je ne vais pas ressasser sur Docker ce que l’on trouve déjà partout sur Internet, pour résumer, il fourni les outils au codeur de développer dans un environnement qui sera identique à la production, et de mettre lui même en production.