CérénIT

Le blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)

Web, Ops & Data - Janvier 2021

timeseries prometheus promql ovhcloud iot openhab timescaledb ptsm anomalie label machine-learning iac ansible libssh vector log warp10 influxdb openssh gpg podman docker-compose sudo

Cloud

Code

  • GitLab release feature report : le code qui permet de générer le rapport ce qui a changé entre les versions de Gitlab.
  • SSH is the new GPG : les dernières versions d’OpenSSH permettent de signer un fichier. Une solution intermédiaire entre de la signature de fichiers à base de MD5 & co qui donnent des informations de conformité mais sans indiquer qui a signé le fichier et une solution GPG plus complexe à mettre en oeuvre ?

Container et orchestration

  • Using Podman and Docker Compose : podman, le “daemonless container engine” va permettre d’être utilisé avec docker-compose dans le cadre de la version 3.0. De quoi favoriser l’adoption de podman ?

Infra as code

  • New LibSSH Connection Plugin for Ansible Network Replaces Paramiko, Adds FIPS Mode Enablement : Ansible change de librairie pour les connexions ssh en remplaçant paramiko par libssh. Elle se veut plus performante et peut être requis dans un contexte demandant du FIPS. Pensez à installer le paquet libssh-dev(el) suivant votre distribution pour pouvoir installer ansible-pylibssh. Mes premiers essais ne notent pas une amélioration sensible des performances… à voir sur d’autres machines et dans la durée…

IoT

  • openHAB 3.0 Release et Release Notes : OpenHAB est une plateforme open source de gestion de périphétiques IoT et d’automatisation autour de ces périphériques. Elle est développée en Java, support 2000 “Things” (objets, équipements, protocoles). La version 3.0 apporte une refonte et l’unification de l’UI et des composants, le passage à Java 11 et plein d’autres choses. La migration depuis une version 2.x se fait assez simplement. Avec le nouveau moteur de règle, j’ai pu supprimer mon code spécifique. Reste encore la partie “Pages” à appréhender… J’avais préféré OpenHAB à Jeedom et Home Assistant
  • Meet Raspberry Silicon: Raspberry Pi Pico now on sale at $4 : la fondation Raspberry Pi se lance dans les micro-controlleurs avec le Pico au prix de 4$.
  • Raspberry Pi PICO la carte Microcontrôleur de la Fondation : un article très détaillé sur la prise en main du pico.

Observabilité

Système

Time Series

Web, Ops & Data - Septembre 2019

kafka traefik service-mesh maesh rook ceph kubernetes kubectl ksql kafka-streams telegraf docker log

Container et Orchestration

Data

  • Say Hello World to event streaming : Confluent publie des tutoriels sur Kafka, Kafka Streams et KSQL pour illustrer différents cas d’usages avec le code associé. Ils ont l’air assez bien fait.

Time Series

  • Release Announcement: Telegraf 1.12.0 : Telegraf, le collecteur de métriques/logs passent en version 1.12 avec 13 nouveaux plugins dont un pour l’ingestion des logs docker et plein d’autres améliorations. L’autre grande nouveauté est l’arrivée des plugins - il est possible d’ajouter des plugins à Telegrad de façon dynamique ; il n’est plus nécessaire de recompiler telegrad avec ces plugins en son sein.

Web, Ops & Data - Avril 2019

influxdb timescaledb traefik kubernetes ssh-agent postgres recherche docker log google cloud next serverless apm glowroot docker registry

Deux petites annonces pour démarrer cette édition :

  • Je serai à KubeCon EU du 20 au 23 Mai à Barcelone. Si vous y allez aussi, dites le moi, ce sera une occasion de se rencontrer.
  • Le BigData Hebdo a ouvert son slack - Vous pouvez nous rejoindre par vous même via ce lien

APM

  • Glowroot : Pour ceux qui s’intéressent au sujet de l’APM et qui ne veulent pas aller chez AppDynamics, Dynatrace ou Elastic, j’ai assisté à une démo intéressante sur Glowroot - il est forcément moins riche que ces concurrents mais il a l’air de faire l’essentiel de ce que l’on peut attendre d’un APM. Il ne marche qu’avec la JVM.

Cloud

Container et Orchestration

DevOps

  • JSON as configuration files: please don’t : Si certains pensaient utiliser JSON pour décrire des fichiers de configurations, l’article rappelle que JSON n’est qu’un format d’échange de données et surtout pas de fichiers de configuration. On peut comprendre la tentation mais on a déjà bien assez à faire avec YAML, INI voire XML. Aucun n’est parfait certes mais pas la peine d’en rajouter.
  • In Defense of YAML : L’auteur critique l’abus autour de YAML pour l’utiliser pour tout et n’importe quoi. Comme format de données, il est utilisable mais nous voyons des détournements où du yaml devient du pseudo code. L’auteur cite la CI Gitlab ou encore Tekton. On ne peut que lui donner raison. Il serait plus simpe d’avoir un vrai langage de programmation plutôt que de tout “YAMLiser”.

Licences

  • Deprecation Notice: MIT and BSD (via Les Cast Codeurs) : Intéressant, les licences BSD/MIT serait à considérer comme dépréciée. L’auteur travaille pour le Blue Oak Council qui publie la licence du même nom. On peut éventuellement lui reprocher un certain biais mais il indique quand même que des licences modernes (comme ASL 2.0) seraient plus judicieuses que de rester sur du MIT/BSD.

Sécurité

SQL

Timeseries

Astuce du mois : gestion de la rotation des logs d’un container docker

Dans les bonnes pratiques Docker, il est dit d’utliser stdout/stderr pour avoir les logs de votre conteneur via docker logs. Toutefois, cette pratique va alimenter un fichier de log /var/lib/docker/containers/<container id>/<conteiner id>-json.log. Ce fichier peut donc saturer votre disque et aller jusqu’à corrompre vos conteneurs. L’autre bonne pratique étant que tout fichier de log doit avoir une politique de rotation du fichier associée pour éviter toute saturation de disque ou d’avoir des trop gros fichiers de logs.

Docker permet de configurer le driver de logs au niveau du démon (via /etc/docker/daemon.json), en argument lors d’un docker run ou dans docker-compose.yml.

Si l’on reste sur le driver json-file et que l’on veut piloter la rotation des logs au niveau de docker-compose.yml, cela donne par ex (version simplifiée) :

version: '3'
services:
  service_xxx:
    image: docker_image_xxx
    [...]
    logging:
      driver: "json-file"
      options:
        max-size: "10m"
        max-file: "10"

Vous pouvez alors définir une stratégie de rotation des logs par container si vous le souhaitez. Ainsi, vous gérer la taille maximale de logs qui vont être générés et êtes ainsi assurés de ne pas avoir de mauvaises surprises à ce niveau là.

Web, Ops & Data - Mars 2017

docker container gcp google shell fish log graphql sre push rwd responsive opensource queue message sécurité ssl sha1 npm yarn javascript

Admin Sys

  • l y a un poisson dans ma coquille ! : J’avais fait il y a quelques années un détour par le shell zsh via “Oh My ZSH” mais je n’étais pas allé bien loin, revenant au final au bon vieux bash. L’article m’a donné envie d’essayer fish et pour le moment, je trouve ça plutôt pas mal. Ne pas se fier à la première impression du site :)
  • Pour faire fonctionner virtualenv(wrapper) avec Fish: VirtualFish
  • Pour enrichir votre Fish, vous pouvez vous appuyer sur fisherman ou le projet oh-my-fish

Containers

  • Adventures in GELF : où l’on apprend notamment que les logs sont par défaut au format JSON et surtout qu’il n’y a pas de rotation des journaux par défaut :’( ; l’article montre ensuite les intérêts du format GELF (avoir un message sous la forme d’un dictionnaire/tableau au format clé/valeur) et les limites (connextion UDP) avec les solutions de contournement actuelles et les solutions à venir prochainement.
  • Announcing Docker Entreprise Edition : Docker Inc annonce une version “Docker Community Edition” et une version “Docker Entreprise Edition” (avec support). Il y aura désormais une version stable trimestrielle (avec changement de versionning à la Ubuntu : YY.MM et une politique de support de 4 mois) ou une version “bleeding edge” mensuelle pour la version communautaire (support mensuel). Pour la version entreprise, c’est trimestrielle avec 1 an de support & maintenance. Docker Inc se dote également d’un programme de certification pour la partie matérielle, système sous jacent, les plugins et les conteneurs en eux même. Une réponse notamment fait à Docker de trop changer le comportement de docker et de ses composants/fonctionnalités d’une version à une autre.
  • CoreOS a l’intention de donner rkt à la Cloud Native Computing Foundation qui hébergedéjà de nombreux projets cloud dont Kubernetes. Docker Inc va faire de même avec containerd. Si le billet de CoreOS laissait penser un travail commun, le billet de Docker ne me donne pas cette impression. Donc a priori chacun va travailler de son côté et on regarde qui sort vainqueur à la fin ? La guerre des containers n’est pas finie…
  • From dotCloud to docker : Une retrospective sur l’histoire de Docker.

Cloud

  • Google Cloud Platform: your Next home in the cloud : Google avait jusqu’à présent plutôt un positionnement de marché de niche où pour aller sur leur cloud il fallait adopter leurs produits. Avec la Conférence Google Cloud Next 2017, s’opère un sacré changement et que Google semble revendiquer : devenir un acteur global du cloud et être en mesure d’accompagner ses clients sur l’ensemble de leurs sujets. S’il ne fallait qu’un exemple, je pendrais bien celui de la certification de SAP HANA sur GCP. On notera aussi l’arrivée de Postgresql en service managé, de nouveaux langages pour App Engine, etc. Je vous laisse trouver les nouveautés mais pour moi la nouveauté est ce changement de positionnement de Google. Les autres fournisseurs de cloud ne doivent pas forcément être ravis de ce changement ; reste à voir si Google convaincra les autres clients. Si par ailleurs, les clients sont déjà chez Google Suite, on peut imaginer qu’ils passent plus aisément dans Google Cloud pour n’avoir qu’un fournisseur…
  • 100 announcements from Google Cloud Next 17 : la liste complète des 100!! annonces…

DevOps

  • Site Reliability Engineering : le terme de Site Reliability Engineering (SRE) prend de plus en plus d’ampleur depuis quelques mois. Un SRE est une personne avec un profil plutôt développeur mais qui est aussi à l’aise sur la partie “opérations” et donc en mesure d’assurer l’exploitation de son application (avec les incidents liés) ; il travaille donc sur les 2 tableaux pour son application. Google partage dans ce livre son expérience de la mise en place de ses équipes SRE pour une partie de leurs produits.

GraphQL

  • Use all the databases - part1 et Use all the databases - part 2 : Deux billets présentant GraphQL qui se veut un successeur de REST. L’article montre comment avec une seule requête faite sur un endpoint GraphQL, on peut aller récupérer des données dans plusieurs bases de données. Intéressant, mais à voir si cela n’est pas trop magique et si on ne crée pas un SPOF de l’application en procédant ainsi.
  • GraphQL Guide : site du livre en cours de préparation sur GraphQL
  • Appolo : le client de référence sur GraphQL utilisable notamment avec React (Native), AngularJS, iOS & Android.

HTML5

  • Managing Push Subscriptions : nouvel article d’une série sur les bonnes pratiques à adaopter lorsque l’on génère des notifications en Push via WebPush.
  • State of Responsive Images 2017 : en version courte, c’est mieux, mais c’est pas encore tout à fait ça. Plus sérieusement, un état des lieux sur les images responsives, ce qui a été fait, les chantiers incomplets voire ratés.

Javascript

  • NPM vs Yarn : une revue assez détaillée des avantages de Yarn sur NPM.

Opensource

Queues & Messages

  • Why Messaging Queues Suck : Réflexion intéressante autour des bus de messages et de la soi-disante agnosticité des producteurs de topics vis à vis de leur consommateurs. Au final, de part les procédures de définition d’accès à un topic (dans un contexte cloud), la partie agnosticité est toute relative. Du coup, pour l’auteur, il est plus intéressant de faire des “endpoints” HTTP entre 2 services et que ce soit le client qui implémente son propre système de queue en interne. Cela mérite réflexion et peut avoir ses intérêts en fonction de votre architecture.

Sécurité

  • Announcing the first SHA1 collision : Google a annoncé la première collision obtenue avec le protocole de chiffrement SHA-1. Une collision est obtenue lorsque la signature de deux fichiers est identique, alors que théoriquement, chaque fichier devrait avoir une signature unique. Même si les conditions pour obtenir cette collision reste assez peu exploitable de part les ressources nécessaires pour le faire, la dépréciation de SHA-1 est accélérée. Par ex, Firefox, qui avait prévu de le finaliser l’abandon du support de SHA-1 avec la version 52 du navigateur vient de le faire en accéléré suite à cette publication et Google Chrome en a fait de même.
  • Incident report on memory leak caused by Cloudflare parser bug : un bug identifié par l’équipe de Google a révélé que depuis septembre 2016 et jusqu’à fin février 2017, un composant de l’infrastructure de Cloudflare divulguait des informations sensibles (identifiants, cookies, etc) de ses utilisateurs lorsqu’il parsait des pages HTML mal formées. L’article de NextImpact l’explique bien, il faut globalement changer vos mots de passes et renouveller vos cookies pour les sites utilisant Cloudflare (une liste ici ou ce site)
  • HTTPS : De SSL à TLS 1.3 : rétrospective et explications sur les différents mécanismes de chiffrement disponibles, leurs forces/faiblesses et l’avenir avec TLS 1.3

Web, Ops & Data - Semaine 50

docker rancher mobile log grafana chronograf statistique packaging npm sécurité csp

Mobile

  • [Lecture] The 2016 U.S. Mobile App Report : Eric, sur la base des chiffres de 2016 rappelle que “[…] vouloir initier la diffusion de son produit/service par une app mobile, c’est partir avec un boulet au pied” et ce même si les statistiques de téléchargement d’applicaitons s’améliorent. Un site web adapté pour mobile sera donc suffisent à court terme (voire tout court), faudrait juste simplifier la création d’un raccourci sur la page d’accueil pour mettre son site mobile au même niveau qu’une application préférée…

Container & Orchestration

  • Rancher 1.2 Is Now Available! : En plus d’apporter la compatibilité avec les dernières versions de Docker (Swarm), Docker-Compose et Kubernes, cette version apporte un meilleur support des plugins réseaux et stockage de Kubernetes & Docker, ainsi qu’une amélioration de la haute disponibilité, de la gestion du cycle de vie de ses applications et une nouvelle politique de sortie de version avec un rythme mensuel.
  • Docker acquires Infinit: a new data layer for distributed applications : En faisant l’acquisition d’Infinit (société française !), Docker semble vouloir promettre un stockage distribué notamment pour les composants statefull (base de données, logs, etc) et ce de façon sécurisée (au sens sécurité ou résilience, cela n’est pas encore précisé).

Mode de travail

  • La revue de code bienveillante : l’article revient sur les bonnes habitudes à prendre dans le cadre d’une revue de code pour qu’elle soit d’une part efficace pour tous et avec la bonne façon de faire.
  • How we stay connected as a remote company : Petit retour pratique sur les habitudes prises au quotidien chez Gitlab pour gérer des équipes distantes.

Packaging

  • npm-based release workflow : Thomas décrit très clairement comment utiliser les fonctionnalités de npm pour gérer le cycle de release de son application (génération du changelog, gestion des numéros de versions, création des tags git, etc).

Statistiques, logs, monitoring (et vie privée)

Sécurité

  • Content Security Policy : la retranscription de la conférence donnée par Nicolas Hoffmann à Codeurs en Seine 2016 sur CSP, la couche sécurité coté navigateurs permettant d’indiquer quels ressources distantes votre site autorise ou pas.
1 2