CérénIT - dockerLe blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)Zola2024-01-31T09:30:00+01:00https://cerenit.fr/tags/docker/atom.xmlWeb, Ops, IoT et Time Series - Janvier 20242024-01-31T09:30:00+01:002024-01-31T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-iot-timeseries-janvier-2024/<p>Après presque 2 ans de silence et le remplacement de Hugo et Bootstrap par <a rel="noopener" target="_blank" href="https://www.getzola.org/">Zola</a> et <a rel="noopener" target="_blank" href="https://tailwindcss.com/">Tailwind</a>/<a rel="noopener" target="_blank" href="https://daisyui.com/">daisyUI</a> l'été dernier pour générer le site, je vous souhaite une bonne année à tous et la résolution de publier plus régulièrement mes trouvailles...</p>
<h3 id="data">Data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://duckdb.org/2024/01/26/multi-database-support-in-duckdb.html">Multi-Database Support in DuckDB</a> : Cela multiplie les possibilités 😎</li>
</ul>
<blockquote>
<p>TL;DR: DuckDB can attach MySQL, Postgres, and SQLite databases in addition to databases stored in its own format. This allows data to be read into DuckDB and moved between these systems in a convenient manner.</p>
</blockquote>
<h3 id="iot">IoT</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.univ-smb.fr/lorawan/">Devenez un expert LoRaWAN</a> via <a rel="noopener" target="_blank" href="https://www.udemy.com/course/lora-et-lorawan-pour-linternet-des-objets/">LoRa et LoRaWAN pour l'Internet des Objets</a>: si vous cherchez un cours théorique et pratique pour vous former aux protocoles LoRa et LoRaWan, je vous le recommande chaudement.</li>
</ul>
<h3 id="ops">Ops</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://dkron.io/">DKron</a> via <a rel="noopener" target="_blank" href="https://blog.stephane-robert.info/post/dkron-jobs-cron/">Dkron pilote vos crontab</a> : un gestionnaire de cron distribué, avec une jolie interface et uen API - que demander de plus ? Sur un modèle agent/serveur, le serveur dRkon distribue les tâches aux agents dKron concernés. les agents dKron étant déployés sur les serveurs sur lesquels les jobs doivent s'exécuter.</li>
</ul>
<h3 id="reverse-proxy">Reverse Proxy</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://caddyserver.com/">Caddy</a> : si vous avez besoin d'un reverse-proxy avec gestion automatique des certificats et redirection HTTP > HTTPS et <a rel="noopener" target="_blank" href="https://caddyserver.com/features">plein d'autres choses encore</a> mais sans nécessité d'intégration avec Docker comme Traefik, alors jetez un coup d'oeil à Caddy. Il permet également d'avoir un certificat sur localhost. Comme Traefik, il est écrit en Go.</li>
</ul>
<p>J'avoue que la concision de Caddy vs Traefik et le provider <code>file</code> est bien appréciable:</p>
<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span># Caddyfile
</span><span>xxx.cerenit.fr {
</span><span> reverse_proxy 127.0.0.1:3000
</span><span>}
</span></code></pre>
<pre data-lang="yaml" style="background-color:#2b303b;color:#c0c5ce;" class="language-yaml "><code class="language-yaml" data-lang="yaml"><span style="color:#65737e;"># Traefik
</span><span style="color:#bf616a;">http</span><span>:
</span><span> </span><span style="color:#bf616a;">middlewares</span><span>:
</span><span> </span><span style="color:#bf616a;">redirectToHttps</span><span>:
</span><span> </span><span style="color:#bf616a;">redirectScheme</span><span>:
</span><span> </span><span style="color:#bf616a;">permanent</span><span>: </span><span style="color:#d08770;">true
</span><span> </span><span style="color:#bf616a;">scheme</span><span>: </span><span style="color:#a3be8c;">https
</span><span> </span><span style="color:#bf616a;">routers</span><span>:
</span><span> </span><span style="color:#bf616a;">grafana</span><span>:
</span><span> </span><span style="color:#bf616a;">entryPoints</span><span>:
</span><span> - </span><span style="color:#a3be8c;">websecure
</span><span> - </span><span style="color:#a3be8c;">web
</span><span> </span><span style="color:#bf616a;">middlewares</span><span>:
</span><span> - </span><span style="color:#a3be8c;">redirectToHttps
</span><span> </span><span style="color:#bf616a;">rule</span><span>: </span><span style="color:#a3be8c;">Host(`xxx.cerenit.fr`)
</span><span> </span><span style="color:#bf616a;">service</span><span>: </span><span style="color:#a3be8c;">grafana@file
</span><span> </span><span style="color:#bf616a;">tls</span><span>:
</span><span> </span><span style="color:#bf616a;">certResolver</span><span>: </span><span style="color:#a3be8c;">le
</span><span> </span><span style="color:#bf616a;">services</span><span>:
</span><span> </span><span style="color:#bf616a;">grafana</span><span>:
</span><span> </span><span style="color:#bf616a;">loadBalancer</span><span>:
</span><span> </span><span style="color:#bf616a;">servers</span><span>:
</span><span> - </span><span style="color:#bf616a;">url</span><span>: </span><span style="color:#a3be8c;">http://127.0.0.1:3000/
</span></code></pre>
<p>Pour un serveur, la migration de Traefik vers Caddy fait passer le fichier de configuration de 172 lignes à 27 - soit presque 6 fois moins ! 😏</p>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/lucaslorentz/caddy-docker-proxy">Caddy-Docker-Proxy</a> via <a rel="noopener" target="_blank" href="https://dev.to/jhot/caddy-docker-proxy-like-traefik-but-better-565l">Caddy Docker Proxy, Like Traefik But Better?</a> : si vous souhaitez aller plus loin dans l'intégration Caddy/Docker dans l'objectif de remplacer Traefik, cela semble être une bonne piste. C'est une version modifiée de Caddy pour s'interfacer avec Docker. L'intégration se fait notamment via les labels, comme pour Traefik. A voir si on peut déployer la version standalone en dehors d'un conteneur comme on peut le faire avec Traefik. Cela éviterit ainsi que chaque container à exposer via Caddy-Docker-Proxy rejoigne le réseau ad-hoc.</li>
</ul>
<p>Exemple:</p>
<pre data-lang="yaml" style="background-color:#2b303b;color:#c0c5ce;" class="language-yaml "><code class="language-yaml" data-lang="yaml"><span style="color:#bf616a;">services</span><span>:
</span><span> </span><span style="color:#bf616a;">whoami</span><span>:
</span><span> </span><span style="color:#bf616a;">image</span><span>: </span><span style="color:#a3be8c;">traefik/whoami
</span><span> </span><span style="color:#bf616a;">networks</span><span>:
</span><span> - </span><span style="color:#a3be8c;">caddy
</span><span> </span><span style="color:#bf616a;">labels</span><span>:
</span><span> </span><span style="color:#bf616a;">caddy</span><span>: </span><span style="color:#a3be8c;">whoami.example.com
</span><span> </span><span style="color:#bf616a;">caddy.reverse_proxy</span><span>: "</span><span style="color:#a3be8c;">{{upstreams 80}}</span><span>"
</span><span>
</span><span style="color:#bf616a;">networks</span><span>:
</span><span> </span><span style="color:#bf616a;">caddy</span><span>:
</span><span> </span><span style="color:#bf616a;">external</span><span>: </span><span style="color:#d08770;">true
</span></code></pre>
Web, Ops, IoT et Time Series - Mars 20222022-03-30T09:30:00+01:002022-03-30T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-iot-timeseries-mars-2022/<h3 id="conteneur-et-orchestration">Conteneur et Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://docs.docker.com/engine/release-notes/#201013">Docker Engine 20.10.13</a> : Docker compose v2 arrive dans docker : ce qui permet de faire <code>docker compose</code> (au lieu de l’original <code>docker-compose</code> coté en python)</li>
<li><a rel="noopener" target="_blank" href="https://blog.vamc19.dev/posts/dockerfile-copy-chmod/"><code>COPY --chmod</code> reduced the size of my container image by 35%</a> : pour réduire la taille de vos images, plutôt que de faire un <code>ADD ...</code> puis un <code>RUN chmod ...</code>, faites directement un <code>ADD/COPY --chmod</code>. Marche aussi avec <code>--chown</code>.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/agoncal/agoncal-talks/blob/master/2020-12-Quarkus/infrastructure/app.yaml#L6-L8">Docker Compose > depends > condition: ready</a> : <code>depends_on</code> a une <a rel="noopener" target="_blank" href="https://github.com/compose-spec/compose-spec/blob/master/spec.md#long-syntax-1">syntaxe longue</a> qui permet de définir une condition sur l'état du service dépendant : démarré (valeur par défaut de la version courte), "sain" (en fonction du résultat d'un healthcheck) ou "terminé avec succès" (si votre service dépend du résultat d'un job ou d'une tâche).</li>
</ul>
<h3 id="numerique">Numérique</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://lescastcodeurs.com/2022/02/24/lcc-273-interview-sur-le-darwinisme-numerique-avec-didier-girard-partie-1/">LCC 273 - Interview sur le darwinisme numérique avec Didier Girard - partie 1</a>, <a rel="noopener" target="_blank" href="https://lescastcodeurs.com/2022/03/07/lcc-274-interview-le-darwinisme-numerique-avec-didier-girard-partie-2/">LCC 274 - Interview le darwinisme numérique avec Didier Girard - partie 2</a> et <a rel="noopener" target="_blank" href="https://lescastcodeurs.com/2022/03/21/lcc-275-interview-sur-le-darwinisme-numerique-avec-didier-girard-partie-3/">LCC 275 - Interview sur le darwinisme numérique avec Didier Girard - partie 3</a> : interview en 3 volets de Didier Girard sur la notion de darwinisme numérique au niveau d'une nation, d'une entreprise et de l'individu.</li>
</ul>
<h3 id="open-data">Open Data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://adresse.data.gouv.fr/">adresse.data.gouv.fr</a> : le site national des adresses dont l'objectif est de référencer l’intégralité des adresses du territoire et les rendre utilisables par tous.</li>
</ul>
<h3 id="outils">Outils</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/Extrawurst/gitui">GitUI</a> : si vous trouvez <code>tig</code> pas très intuitif/pratique, GitUI pourrait vous plaire. Prévu pour le terminal, il permet de se ballader facilement dans votre historique git & co. L' outil en codé en Rust.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/konradsz/igrep">igrep</a> : un grep interactif qui permet d'ouvrir le fichier dans un éditeur et d'aller directement à la ligne contenant le motif recherché. Basé sur l'excellent <a rel="noopener" target="_blank" href="https://github.com/BurntSushi/ripgrep/">ripgrep</a>.</li>
</ul>
<h3 id="python">Python</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/florimondmanca/awesome-asgi">Awesome AGSI</a> : liste de ressources compatibles ASGI (Asynchronous Server Gateway Interface)</li>
<li><a rel="noopener" target="_blank" href="https://youtu.be/SRBWH58JONE">Demystifying Python's Async and Await Keywords</a> : une intro à async/await avec asyncio.</li>
<li><a rel="noopener" target="_blank" href="https://realpython.com/python-zipfile/">Python's zipfile: Manipulate Your ZIP Files Efficiently</a> : le module <a rel="noopener" target="_blank" href="https://docs.python.org/3/library/zipfile.html">zipfile</a> inclus dans la librairie standard Python permet de manipuler aisément des archives Zip. La page illustre les différentes méthodes et capacités du module.</li>
<li><a rel="noopener" target="_blank" href="https://towardsdatascience.com/how-to-write-user-friendly-command-line-interfaces-in-python-cc3a6444af8e">How to Write User-friendly Command Line Interfaces in Python</a> : si le module <code>argparse</code> est assez connu et peut être aussi <a rel="noopener" target="_blank" href="https://github.com/google/python-fire">Fire</a>, c'est l'occasion de découvrir <a rel="noopener" target="_blank" href="https://click.palletsprojects.com/en/8.0.x/">Click</a> (par l'équipe derrière Flask & co et à ne pas confondre avec <a rel="noopener" target="_blank" href="https://github.com/ajalt/clikt">clikt</a> en Kotlin), <a rel="noopener" target="_blank" href="https://typer.tiangolo.com/">Typer</a> (par le fondateur de FastAPI).</li>
<li><a rel="noopener" target="_blank" href="https://rzayev-sehriyar.medium.com/build-a-user-friendly-cli-from-pure-python-functions-348858c61022">Build a User-Friendly CLI from Pure Python Functions</a> : suite de l'article précédent avec la mise en place de <a rel="noopener" target="_blank" href="https://bstlabs.github.io/py-dynacli/">DynaCLI</a> dont le but est de générer des CLI depuis des fonctions pythons "pures".</li>
<li><a rel="noopener" target="_blank" href="https://mathspp.com/blog/pydonts/pass-by-value-reference-and-assignment">Pass-by-value, reference, and assignment | Pydon't 🐍</a> : Python passe-t-il ses variables par valeur ? par référence ou par assignement ?</li>
<li><a rel="noopener" target="_blank" href="https://ccbv.co.uk/">(Dajngo) Classy Class-Based Views</a> : une représentation détaillée des méthodes, attributs et propriétés des "Class based views" de Django</li>
<li><a rel="noopener" target="_blank" href="https://towardsdatascience.com/fugue-and-duckdb-fast-sql-code-in-python-e2e2dfc0f8eb">Fugue and DuckDB: Fast SQL Code in Python</a> : Fugue permet de combiner du SQL et du code Python et DuckDB permet de faire tourner une base OLAP. De quoi accélérer le traitement de vos données en python ?</li>
</ul>
<h3 id="rgpd-privacy-shield">RGPD & Privacy Shield</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://noyb.eu/en/privacy-shield-20-first-reaction-max-schrems">"Privacy Shield 2.0"? - First Reaction by Max Schrems</a> : La Commission Européenne et les USA ont annoncé une nouvelle version du Privacy Shield. Max Schrems est sceptique pour le moment...</li>
<li><a rel="noopener" target="_blank" href="https://matomo.org/blog/2022/01/google-analytics-4-vs-universal-analytics/">Google Analytics 4 (GA4) vs Universal Analytics (UA)</a> : Matomo se livre à un comparatif et une analyse (forcément un peu biaisés) de Google Analytics 4 vs Universal Analytics. Dans tous les cas, la conclusion est de prendre une solution qui répond à vos critères et respectent les règles du jeu (GDPR, etc).</li>
</ul>
Web, Ops, Data et Time Series - Septembre 20212021-09-29T09:30:00+02:002021-09-29T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-data-timeseries-septembre-2021/<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://lescastcodeurs.com/2021/09/02/lcc-262-interview-cloud-de-confiance-avec-quentin-adam/">LCC 262 - Interview Cloud de Confiance avec Quentin Adam</a> : Interview posée, pédagogue et claire sur les enjeux du cloud de confiance / cloud souverain mais pas que. A écouter absolument.</li>
<li><a rel="noopener" target="_blank" href="https://blog.cloudflare.com/introducing-r2-object-storage/">Announcing Cloudflare R2 Storage: Rapid and Reliable Object Storage, minus the egress fees</a> : après <a rel="noopener" target="_blank" href="https://blog.cloudflare.com/aws-egregious-egress/">son billet vindicatif vis à vis des couts de transferts AWS</a>, Cloudflaire sort son système de fichiers distribué qui se veut une alternative à S3 et avec un cout de migration depuis AWS marginal/progressif puisque apparemment seuls les fichiers appelés seront sortis de leur bucket d'origine pour aller sur R2 et être servi depuis R2 ensuite </li>
<li><a rel="noopener" target="_blank" href="https://www.lastweekinaws.com/blog/the-compelling-economics-of-cloudflare-r2/">The Compelling Economics of Cloudflare R2 </a> : quelques exemples des économies réalisées entre R2 et S3 ou R2 en mode proxy devant S3.</li>
</ul>
<h3 id="container-et-orchestration">Container et Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/updating-product-subscriptions/">Docker is Updating and Extending Our Product Subscriptions</a> : TL;DR: Docker Desktop requiert un abonnement Pro/Team/Business si vous êtes une organisation de plus de 250 employés et 10 Millions de Chiffre d'affaires. L'abonnement commence à 5$/mois/utilisateur. Ce changement démarre au 31/08/2021 avec une période de grâce jusqu'au 31/01/2022. Si certains crient au scandale, il faut bien voir <a rel="noopener" target="_blank" href="https://twitter.com/glours/status/1432829592750993409">tout ce que Docker Desktop fourni</a> et <a rel="noopener" target="_blank" href="https://twitter.com/idriss_neumann/status/1432968207665610753">le travail d'intégration que cela représente</a>. Il faut bien que la société Docker vive pour maintenir ses produits. Tout cela se retrouve dans <a rel="noopener" target="_blank" href="https://www.docker.com/blog/the-magic-behind-the-scenes-of-docker-desktop/">The Magic Behind the Scenes of Docker Desktop</a>.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/releases/2021/08/31/podman-release-v3.3.0.html">Podman Release v3.3.0</a> : cette version apporte "podman machine" qui devrait notamment permettre un meilleur support de podman sous OSX avec une couche de virtualisation intermédiaire dans la même veine que Docker Desktop dans le but de proposer une intégration native. Cela <a rel="noopener" target="_blank" href="https://twitter.com/idriss_neumann/status/1433083136011902980">ne semble pas fonctionner sur un Apple M1</a> à cause de l'incompatibilité actuelle de Virtual Box avec ces puces. Si Podman peut certes être une alternative à Docker (Desktop), cela montre aussi le travail d'intégration réalisé par Docker Inc notamment pour le support des Apple M1.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/blogs/2021/09/06/podman-on-macs.html">Podman on Macs Update</a> : statut sur le support de Podman dans un context MacOS/Intel, Windows/Intel et le reste à faire pour MacOS/M1. En attendant, <code>podman machine</code> est supporté nativement sur Linux et MacOS/Intel et en remote client sur Windows/Intel.</li>
<li><a rel="noopener" target="_blank" href="https://www.infoworld.com/article/3632142/how-docker-broke-in-half.html">How Docker broke in half</a> : restrospective sur Docker de ses origines à aujourd'hui et quelques pistes pour le futur...</li>
<li><a rel="noopener" target="_blank" href="https://github.com/docker/compose/releases/tag/v2.0.0">Docker Compose V2.0.0</a> : L'outil a été réécrit en go plutôt qu'en python et se veut accessible via la docker cli en tant que sous système (ie <code>docker compose xxx</code>). Pour Windows & OSX, il est fourni avec Docker Desktop.</li>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/accelerating-new-features-in-docker-desktop/">Accelerating New Features in Docker Desktop</a> où l'on parle de l'arrivée prochaine d'un Docker Desktop For Linux !!</li>
<li><a rel="noopener" target="_blank" href="https://ably.com/blog/no-we-dont-use-kubernetes">No, we don’t use Kubernetes</a> : un billet rafraichissant qui rappelle que Kubernetes n'est pas l'alpha et l'omega de l'infrasatructure.</li>
</ul>
<h3 id="iot">IoT</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.adafruit.com/2021/09/20/circuitpython-7-0-0-released/">CircuitPython 7.0.0 Released!</a> : version majeure de <a rel="noopener" target="_blank" href="https://circuitpython.org/">CircuitPython</a> qui apporte son lot d'améliorations matérielles et logicielles depuis la version 6.3</li>
<li><a rel="noopener" target="_blank" href="https://github.com/tinygo-org/tinygo/releases/tag/v0.20.0">tinygo 0.20</a> : principalement l'ajout du support de Go 1.17 et de nouveaux controlleurs.</li>
</ul>
<h3 id="jvm">JVM</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/">Good-bye AdoptOpenJDK. Hello Adoptium!</a> : le projet AdoptOpenJDK est repris sous le projet Eclipse Adoptium, qui vient de signer sa <a rel="noopener" target="_blank" href="https://blog.adoptium.net/2021/08/adoptium-celebrates-first-release/">première release</a>. Il faudra prévoir une migration vers leurs binaires et leurs dépots ultérieurement (date non définie à ce jour).</li>
</ul>
<h3 id="recherche">Recherche</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://engineeringblog.yelp.com/2021/09/nrtsearch-yelps-fast-scalable-and-cost-effective-search-engine.html">Nrtsearch: Yelp’s Fast, Scalable and Cost Effective Search Engine</a> : nouvel entrant dans le monde de la recherche distribuée et opensource basée sur Lucene. Après ElasticSearch et OpenSearch, c'est au tour de Nrtsearch édité par Yelp qui a cherché à résoudre les problèmes qu'ils rencontraient avec ElasticSearch.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.blog/2021-09-08-github-security-update-vulnerabilities-tar-npmcli-arborist/">GitHub security update: Vulnerabilities in tar and @npmcli/arborist</a> : si vous utilisez le package <code>tar</code> de NodeJS directement (ou indirectement), il est judicieux de mettre à jour votre version de <code>npm</code> et <code>node</code> et de vérifier vos dépendances.</li>
<li><a rel="noopener" target="_blank" href="https://gynvael.coldwind.pl/?id=740">Demon's Cries vulnerability (some NETGEAR smart switches)</a> : si vous avez des "smart switchs" de la marque Netgear, il est temps de patcher le firmware de votre équipement.</li>
<li><a rel="noopener" target="_blank" href="https://scotthelme.co.uk/lets-encrypt-old-root-expiration/">Let's Encrypt's Root Certificate is expiring!</a> : si vous avez de vieux équipements dans la nature et qu'ils utilisent ce certificat de Lets Encrypt, il y a des chances qie cela se passe mal à compter de demain...</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/industrie-du-futur-donnees-chemin-critique/">Industrie du futur : les données sur le chemin critique</a>, <a rel="noopener" target="_blank" href="https://blog.senx.io/industrie-du-futur-donnees-chemin-critique-partie-2/">Industrie du futur : les données sur le chemin critique – Partie 2</a> et <a rel="noopener" target="_blank" href="https://blog.senx.io/industrie-du-futur-donnees-chemin-critique-partie-3/">Industrie du futur : les données sur le chemin critique – Partie 3</a> : Suite d'un premier article "<a rel="noopener" target="_blank" href="https://blog.senx.io/les-series-temporelles-le-veritable-futur-de-la-donnee/">Les séries temporelle : le futur de la donnée</a> qui continue à poser les enjeux de l'industrie du futur et les évolutions que cela va apporter pour permettre une maintenance analytique (version optimisée de la maintenance préventive et réactive/conditionelle), la data pour la création de nouveaux services et générateurs de revenus (directs ou indirects), les jumeaux numériques et sur un fond de synergies entre l'informatique technique et celle de gestion pour une optimisation des process.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/server-monitoring-warp-10-telegraf/">Server monitoring with Warp 10 and Telegraf</a> : Premiers pas pour la mise en place d'une stack de monitoring avec Telegraf / Warp 10 et Discovery ; manque plus que la suite à
<a rel="noopener" target="_blank" href="https://blog.senx.io/alerts-are-real-time-series/">Alerts are real time series</a> pour avoir la partie alerting (et notifications ?).</li>
<li><a rel="noopener" target="_blank" href="https://warp10.io/content/05_Ecosystem/02_Visualization/02_Discovery/00_Overview">Discovery</a> : la documentation de la solution de Dashboard as Code pour Warp 10 est (enfin) arrivée !</li>
<li><a rel="noopener" target="_blank" href="https://github.com/winedarksea/AutoTS">winedarksea/AutoTS</a> : tout est dans la description : <strong>"AutoML for forecasting with open-source time series implementations."</strong> ; c'est en Python et cela embarque beaucoup de classes / modèles / transformations / ...</li>
<li><a rel="noopener" target="_blank" href="https://arundo-adtk.readthedocs-hosted.com">Anomaly Detection Toolkit (ADTK)</a> : un framework de détéction d'anomalies en python.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/questdb/questdb/releases/tag/6.0.5">QuestDB 6.0.5</a> & <a rel="noopener" target="_blank" href="https://questdb.io/blog/2021/09/13/release-6-0-5/">QuestDB 6.0.5 September release, geospatial support</a> : la géotimeseries devient tendance : après InfluxDB qui l'a introduit il y a un an environ, et bien longtemps après Warp 10, c'est au tour de QuestDB d'introduire le support des <a rel="noopener" target="_blank" href="https://questdb.io/docs/concept/geohashes/">données géospatiales</a>. La version apporte aussi des améliorations sur <code>first()</code> et <code>last()</code> ainsi que les nouvelles fonctions <code>timestamp_floor()</code> et <code>timestamp_ceil()</code> pour gérer les arrondis inférieurs/supérieurs. Enfin, l'API HTTP accepte des paramètres liés au "Out Of Order".</li>
<li><a rel="noopener" target="_blank" href="https://github.com/questdb/questdb/releases/tag/6.0.6">QuestDB 6.0.6</a> : version de maintenance </li>
<li><a rel="noopener" target="_blank" href="https://github.com/questdb/questdb/releases/tag/6.0.7">QuestDB 6.0.7</a> : la version 6.0.6 introduit un bug dans le cadre de la migration depuis une version antérieure. La version 6.0.7 apporte un correctif sur le sujet. Si vous êtes en en 6.0.6, mettre à jour * [en 6.0.7 - si vous êtes dans une version inférieure à 6.0.6, passez à la version 6.0.7 sans passer par la case 6.0.6</li>
<li><a rel="noopener" target="_blank" href="https://github.com/questdb/questdb/releases/tag/6.0.7.1">QuestDB 6.0.7.1</a> : en espérant que cette version soit enfin la bonne pour les migrations.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/timescale/timescaledb/releases/tag/2.4.2">TimescaleDB 2.4.2</a> : version de maintenance</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/influxdbs-checks-and-notifications-system/">InfluxDB’s Checks and Notifications System</a> : un billet très détaillé sur le fonctionnement des checks et des notifications sous InfluxDB v2 pour mettre en place vos alertes.</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/09/10/new-in-grafana-8.1-gradient-mode-for-time-series-visualizations-and-dynamic-panel-configuration/">New in Grafana 8.1: Gradient mode for Time series visualizations and dynamic panel configuration</a> : un mode gradient pour les time series qui permet d'appliquer des couleurs sur ses graphs en fonction de seuils.</li>
</ul>
Web, Ops, Data et Time Series - Septembre 20212021-09-29T09:30:00+02:002021-09-29T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-data-timeseries-septembre-2021/<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://lescastcodeurs.com/2021/09/02/lcc-262-interview-cloud-de-confiance-avec-quentin-adam/">LCC 262 - Interview Cloud de Confiance avec Quentin Adam</a> : Interview posée, pédagogue et claire sur les enjeux du cloud de confiance / cloud souverain mais pas que. A écouter absolument.</li>
<li><a rel="noopener" target="_blank" href="https://blog.cloudflare.com/introducing-r2-object-storage/">Announcing Cloudflare R2 Storage: Rapid and Reliable Object Storage, minus the egress fees</a> : après <a rel="noopener" target="_blank" href="https://blog.cloudflare.com/aws-egregious-egress/">son billet vindicatif vis à vis des couts de transferts AWS</a>, Cloudflaire sort son système de fichiers distribué qui se veut une alternative à S3 et avec un cout de migration depuis AWS marginal/progressif puisque apparemment seuls les fichiers appelés seront sortis de leur bucket d'origine pour aller sur R2 et être servi depuis R2 ensuite </li>
<li><a rel="noopener" target="_blank" href="https://www.lastweekinaws.com/blog/the-compelling-economics-of-cloudflare-r2/">The Compelling Economics of Cloudflare R2 </a> : quelques exemples des économies réalisées entre R2 et S3 ou R2 en mode proxy devant S3.</li>
</ul>
<h3 id="container-et-orchestration">Container et Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/updating-product-subscriptions/">Docker is Updating and Extending Our Product Subscriptions</a> : TL;DR: Docker Desktop requiert un abonnement Pro/Team/Business si vous êtes une organisation de plus de 250 employés et 10 Millions de Chiffre d'affaires. L'abonnement commence à 5$/mois/utilisateur. Ce changement démarre au 31/08/2021 avec une période de grâce jusqu'au 31/01/2022. Si certains crient au scandale, il faut bien voir <a rel="noopener" target="_blank" href="https://twitter.com/glours/status/1432829592750993409">tout ce que Docker Desktop fourni</a> et <a rel="noopener" target="_blank" href="https://twitter.com/idriss_neumann/status/1432968207665610753">le travail d'intégration que cela représente</a>. Il faut bien que la société Docker vive pour maintenir ses produits. Tout cela se retrouve dans <a rel="noopener" target="_blank" href="https://www.docker.com/blog/the-magic-behind-the-scenes-of-docker-desktop/">The Magic Behind the Scenes of Docker Desktop</a>.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/releases/2021/08/31/podman-release-v3.3.0.html">Podman Release v3.3.0</a> : cette version apporte "podman machine" qui devrait notamment permettre un meilleur support de podman sous OSX avec une couche de virtualisation intermédiaire dans la même veine que Docker Desktop dans le but de proposer une intégration native. Cela <a rel="noopener" target="_blank" href="https://twitter.com/idriss_neumann/status/1433083136011902980">ne semble pas fonctionner sur un Apple M1</a> à cause de l'incompatibilité actuelle de Virtual Box avec ces puces. Si Podman peut certes être une alternative à Docker (Desktop), cela montre aussi le travail d'intégration réalisé par Docker Inc notamment pour le support des Apple M1.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/blogs/2021/09/06/podman-on-macs.html">Podman on Macs Update</a> : statut sur le support de Podman dans un context MacOS/Intel, Windows/Intel et le reste à faire pour MacOS/M1. En attendant, <code>podman machine</code> est supporté nativement sur Linux et MacOS/Intel et en remote client sur Windows/Intel.</li>
<li><a rel="noopener" target="_blank" href="https://www.infoworld.com/article/3632142/how-docker-broke-in-half.html">How Docker broke in half</a> : restrospective sur Docker de ses origines à aujourd'hui et quelques pistes pour le futur...</li>
<li><a rel="noopener" target="_blank" href="https://github.com/docker/compose/releases/tag/v2.0.0">Docker Compose V2.0.0</a> : L'outil a été réécrit en go plutôt qu'en python et se veut accessible via la docker cli en tant que sous système (ie <code>docker compose xxx</code>). Pour Windows & OSX, il est fourni avec Docker Desktop.</li>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/accelerating-new-features-in-docker-desktop/">Accelerating New Features in Docker Desktop</a> où l'on parle de l'arrivée prochaine d'un Docker Desktop For Linux !!</li>
<li><a rel="noopener" target="_blank" href="https://ably.com/blog/no-we-dont-use-kubernetes">No, we don’t use Kubernetes</a> : un billet rafraichissant qui rappelle que Kubernetes n'est pas l'alpha et l'omega de l'infrasatructure.</li>
</ul>
<h3 id="iot">IoT</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.adafruit.com/2021/09/20/circuitpython-7-0-0-released/">CircuitPython 7.0.0 Released!</a> : version majeure de <a rel="noopener" target="_blank" href="https://circuitpython.org/">CircuitPython</a> qui apporte son lot d'améliorations matérielles et logicielles depuis la version 6.3</li>
<li><a rel="noopener" target="_blank" href="https://github.com/tinygo-org/tinygo/releases/tag/v0.20.0">tinygo 0.20</a> : principalement l'ajout du support de Go 1.17 et de nouveaux controlleurs.</li>
</ul>
<h3 id="jvm">JVM</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.adoptopenjdk.net/2021/08/goodbye-adoptopenjdk-hello-adoptium/">Good-bye AdoptOpenJDK. Hello Adoptium!</a> : le projet AdoptOpenJDK est repris sous le projet Eclipse Adoptium, qui vient de signer sa <a rel="noopener" target="_blank" href="https://blog.adoptium.net/2021/08/adoptium-celebrates-first-release/">première release</a>. Il faudra prévoir une migration vers leurs binaires et leurs dépots ultérieurement (date non définie à ce jour).</li>
</ul>
<h3 id="recherche">Recherche</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://engineeringblog.yelp.com/2021/09/nrtsearch-yelps-fast-scalable-and-cost-effective-search-engine.html">Nrtsearch: Yelp’s Fast, Scalable and Cost Effective Search Engine</a> : nouvel entrant dans le monde de la recherche distribuée et opensource basée sur Lucene. Après ElasticSearch et OpenSearch, c'est au tour de Nrtsearch édité par Yelp qui a cherché à résoudre les problèmes qu'ils rencontraient avec ElasticSearch.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.blog/2021-09-08-github-security-update-vulnerabilities-tar-npmcli-arborist/">GitHub security update: Vulnerabilities in tar and @npmcli/arborist</a> : si vous utilisez le package <code>tar</code> de NodeJS directement (ou indirectement), il est judicieux de mettre à jour votre version de <code>npm</code> et <code>node</code> et de vérifier vos dépendances.</li>
<li><a rel="noopener" target="_blank" href="https://gynvael.coldwind.pl/?id=740">Demon's Cries vulnerability (some NETGEAR smart switches)</a> : si vous avez des "smart switchs" de la marque Netgear, il est temps de patcher le firmware de votre équipement.</li>
<li><a rel="noopener" target="_blank" href="https://scotthelme.co.uk/lets-encrypt-old-root-expiration/">Let's Encrypt's Root Certificate is expiring!</a> : si vous avez de vieux équipements dans la nature et qu'ils utilisent ce certificat de Lets Encrypt, il y a des chances qie cela se passe mal à compter de demain...</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/industrie-du-futur-donnees-chemin-critique/">Industrie du futur : les données sur le chemin critique</a>, <a rel="noopener" target="_blank" href="https://blog.senx.io/industrie-du-futur-donnees-chemin-critique-partie-2/">Industrie du futur : les données sur le chemin critique – Partie 2</a> et <a rel="noopener" target="_blank" href="https://blog.senx.io/industrie-du-futur-donnees-chemin-critique-partie-3/">Industrie du futur : les données sur le chemin critique – Partie 3</a> : Suite d'un premier article "<a rel="noopener" target="_blank" href="https://blog.senx.io/les-series-temporelles-le-veritable-futur-de-la-donnee/">Les séries temporelle : le futur de la donnée</a> qui continue à poser les enjeux de l'industrie du futur et les évolutions que cela va apporter pour permettre une maintenance analytique (version optimisée de la maintenance préventive et réactive/conditionelle), la data pour la création de nouveaux services et générateurs de revenus (directs ou indirects), les jumeaux numériques et sur un fond de synergies entre l'informatique technique et celle de gestion pour une optimisation des process.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/server-monitoring-warp-10-telegraf/">Server monitoring with Warp 10 and Telegraf</a> : Premiers pas pour la mise en place d'une stack de monitoring avec Telegraf / Warp 10 et Discovery ; manque plus que la suite à
<a rel="noopener" target="_blank" href="https://blog.senx.io/alerts-are-real-time-series/">Alerts are real time series</a> pour avoir la partie alerting (et notifications ?).</li>
<li><a rel="noopener" target="_blank" href="https://warp10.io/content/05_Ecosystem/02_Visualization/02_Discovery/00_Overview">Discovery</a> : la documentation de la solution de Dashboard as Code pour Warp 10 est (enfin) arrivée !</li>
<li><a rel="noopener" target="_blank" href="https://github.com/winedarksea/AutoTS">winedarksea/AutoTS</a> : tout est dans la description : <strong>"AutoML for forecasting with open-source time series implementations."</strong> ; c'est en Python et cela embarque beaucoup de classes / modèles / transformations / ...</li>
<li><a rel="noopener" target="_blank" href="https://arundo-adtk.readthedocs-hosted.com">Anomaly Detection Toolkit (ADTK)</a> : un framework de détéction d'anomalies en python.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/questdb/questdb/releases/tag/6.0.5">QuestDB 6.0.5</a> & <a rel="noopener" target="_blank" href="https://questdb.io/blog/2021/09/13/release-6-0-5/">QuestDB 6.0.5 September release, geospatial support</a> : la géotimeseries devient tendance : après InfluxDB qui l'a introduit il y a un an environ, et bien longtemps après Warp 10, c'est au tour de QuestDB d'introduire le support des <a rel="noopener" target="_blank" href="https://questdb.io/docs/concept/geohashes/">données géospatiales</a>. La version apporte aussi des améliorations sur <code>first()</code> et <code>last()</code> ainsi que les nouvelles fonctions <code>timestamp_floor()</code> et <code>timestamp_ceil()</code> pour gérer les arrondis inférieurs/supérieurs. Enfin, l'API HTTP accepte des paramètres liés au "Out Of Order".</li>
<li><a rel="noopener" target="_blank" href="https://github.com/questdb/questdb/releases/tag/6.0.6">QuestDB 6.0.6</a> : version de maintenance </li>
<li><a rel="noopener" target="_blank" href="https://github.com/questdb/questdb/releases/tag/6.0.7">QuestDB 6.0.7</a> : la version 6.0.6 introduit un bug dans le cadre de la migration depuis une version antérieure. La version 6.0.7 apporte un correctif sur le sujet. Si vous êtes en en 6.0.6, mettre à jour * [en 6.0.7 - si vous êtes dans une version inférieure à 6.0.6, passez à la version 6.0.7 sans passer par la case 6.0.6</li>
<li><a rel="noopener" target="_blank" href="https://github.com/questdb/questdb/releases/tag/6.0.7.1">QuestDB 6.0.7.1</a> : en espérant que cette version soit enfin la bonne pour les migrations.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/timescale/timescaledb/releases/tag/2.4.2">TimescaleDB 2.4.2</a> : version de maintenance</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/influxdbs-checks-and-notifications-system/">InfluxDB’s Checks and Notifications System</a> : un billet très détaillé sur le fonctionnement des checks et des notifications sous InfluxDB v2 pour mettre en place vos alertes.</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/09/10/new-in-grafana-8.1-gradient-mode-for-time-series-visualizations-and-dynamic-panel-configuration/">New in Grafana 8.1: Gradient mode for Time series visualizations and dynamic panel configuration</a> : un mode gradient pour les time series qui permet d'appliquer des couleurs sur ses graphs en fonction de seuils.</li>
</ul>
Web, Ops, Data et Time Series - Aout 20212021-08-25T09:30:00+02:002021-08-25T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-data-timeseries-aout-2021/<h3 id="conteneurs-et-orchestration">Conteneurs et orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/engineering-update-buildkit-0-9-and-docker-buildx-0-6-releases/">Engineering Update: BuildKit 0.9 and Docker Buildx 0.6 Releases</a> : diverses améliorations au niveau du format Dockerfile, de buildtkit et de docker-buildx. Le changement le plus visible et apprécié sera surement le support de la syntaxe <a rel="noopener" target="_blank" href="https://github.com/moby/buildkit/blob/dockerfile/1.3.0-labs/frontend/dockerfile/docs/syntax.md#here-documents">"Here-Documents"</a></li>
<li><a rel="noopener" target="_blank" href="https://blog.rook.io/rook-v1-7-storage-enhancements-6ae647aa5d97">Rook v1.7 Storage Enhancements</a> : Possibilité d'installer un cluster Ceph via un chart Helm (plutôt que via les manifests), des options d'amélioration de la résilience d'un cluster (file mirroring, resource protection from delettion, "stretch cluster" passe en stable) et d'autres améliorations diverses (mise à jour des CRD, etc). A noter que le driver flex va disparaitre en 1.8 au profit du driver CSI.</li>
<li><a rel="noopener" target="_blank" href="https://traefik.io/blog/announcing-traefik-proxy-2-5/">Announcing Traefik Proxy 2.5</a> : Support de Kubernetes 1.22 (et mise à jour des CRD associées, ainsi que des API dépréciées), support de Consul Connect (le service mesh fourni par consul), gestion des plugins locaux et possibilité de créer ses propres providers (dans la même veine que Docker, Kubernetes, etc), support expérimental d'HTTP/3 et enfin ajout des middleware au niveau TCP (et pas uniquement HTTP)</li>
<li><a rel="noopener" target="_blank" href="https://traefik.io/blog/integrating-consul-connect-service-mesh-with-traefik-2-5/">Integrating Consul Connect Service Mesh with Traefik 2.5</a> : ex d'intégration Traefik 2.5 avec Consul Connect.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/beta-support-for-crds-in-the-terraform-provider-for-kubernetes">Beta Support for CRDs in the Terraform Provider for Kubernetes</a> : la resource <code>kubernetes_manifest</code> permet de définir ses propres manifests et donc permet d'utiliser des CRD non disponibles dans le provider officiel. Plus pratique que de générer les manifests via des templates et de faire du <code>kubectl apply</code> par dessus.</li>
</ul>
<h3 id="go">Go</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://dev.to/aurelievache/series/13751">Learning Go by examples</a> : Les parties 4 à 7 sont arrivées avec du CLI, du Bot, du jeu, des app Desktop/GUI, etc.</li>
</ul>
<h3 id="monitoring-observabilite">Monitoring & Observabilité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.bloomberg.com/news/articles/2021-08-24/grafana-labs-raises-220-million-round-at-3-billion-valuation">Grafana Labs Raises $220 Million Round at $3 Billion Valuation</a> : Grafana Labs continue sur sa lancée avec une 3ème levée de fonds de 220 M$ quasiment un an jour pour jour après leur série B. Soit un total de 295 M$ et une valorisation de 3 Mds $. Ils avaient annoncé il y a quelques années vouloir batir une solution à 360° de l'observabilité, c'est en train de se réaliser. Avec l'intelligence de pouvoir utiliser tout ou partie de leurs produits en fonction de nos besoins.</li>
<li><a rel="noopener" target="_blank" href="https://vector.dev/releases/0.16.0/">Vector v0.16.0 release notes</a> : Ajout d'une source nats, support des proxys HTTP, amélioration du rate limiting des sinks faisant des appels HTTP, chart helm en beta et d'autres améliorations.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/release-announcement-influxdb-oss-enterprise-1-8-9/">Release Announcement: InfluxDB OSS & Enterprise 1.8.9</a> : version de maintenance de la branche 1.8 OSS & Entreprise - les versions les plus récentes en 0SS étant 2.0.8 et en Entreprise 1.9.3</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/release-announcement-influxdb-oss-2-0-8/">Release Announcement: InfluxDB OSS 2.0.8</a> : passage à Go 1.16, mise à jour de Flux, d'Influx-UI et de flux-lsb-browser. Il est également possible de ne plus lancer l'UI Web. Cette version est la dernière qui aura le client influx fourni avec le binaire du serveur. A compter la version 2.1.0, il faudra télécharger le client indépendamment. Il faudra le récupérer depuis le projet github <a rel="noopener" target="_blank" href="https://github.com/influxdata/influx-cli/releases">influx-cli</a> ou <a rel="noopener" target="_blank" href="https://portal.influxdata.com/downloads/">la page de téléchargement InfluxData</a></li>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/blog/move-fast-but-dont-break-things-introducing-the-experimental-schema-with-new-experimental-features-in-timescaledb-2-4/">Move fast, but don’t break things: Introducing the experimental schema (with new experimental features) in TimescaleDB 2.4</a>, <a rel="noopener" target="_blank" href="https://github.com/timescale/timescaledb/releases/tag/2.4.0">TimescaleDB 2.4.0</a> et <a rel="noopener" target="_blank" href="https://github.com/timescale/timescaledb/releases/tag/2.4.1">TimescaleDB 2.4.1</a> : Comme annoncé précédemment, Postgresql 11 n'est plus supporté pour pouvoir apporter certaines nouvelles fonctionnalités. Cette version apporte le "schéma experimental" qui permet de tester des fonctionnalités en avance de phase, sans impacter ceux qui n'en ont pas besoin. Cela apporte aussi des fonctions comme <code>time_bucket_ng</code> qui permet de faire de nouvelles aggrégations et d'avoir prochainement un support des timezones. La seconde fonctionnalité expérimentale porte sur la capacité à bouger de la donnée entre plusieurs nodes en mode cluster.</li>
</ul>
Web, Ops, Data et Time Series - Avril 20212021-04-28T09:30:00+02:002021-04-28T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-data-timeseries-avril-2021/<h3 id="code">Code</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.engineering.publicissapient.fr/2021/04/08/docteur-jai-commite-8-go-dans-mon-git-cest-grave/">Docteur, j’ai commité 8 Go dans mon Git. C’est grave ?</a> : un petit exemple de l'utilisation de <a rel="noopener" target="_blank" href="https://github.com/newren/git-filter-repo">git-filter-repo</a> pour nettoyer son historique git de fichiers inutiles.</li>
<li><a rel="noopener" target="_blank" href="https://blog.stephane-robert.info/post/gitlab-trigger/">Les pipelines parent-enfant de gitlab-ci</a> : article sur la modularisation de gitlab-ci avec les pipelines parent/enfant au sein d'un même dépôt de code ou entre plusieurs dépot avec passage de variables entre eux.</li>
<li><a rel="noopener" target="_blank" href="https://news.ycombinator.com/item?id=26919510">Minio Changes License to AGPL</a> : Minio passe (aussi) son code en AGPL, l'annonce officielle n'est pas encore arrivée.</li>
</ul>
<h3 id="conteneur-et-orchestration">Conteneur et orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://podcast.electro-monkeys.fr/926791/5088215-docker-compose-avec-nicolas-de-loof">Electro Monkeys - Docker Compose avec Nicolas de Loof</a> : Retour sur la Developper Experience autour de Docker, l'historique et le futur de docker-compose, la création de la spécification Compose, les intégrations AWS/ECS et Azure/ACI, l'intégration Kubernetes, etc.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/nttlabs/nerdctl-359311b32d0e">nerdctl: Docker-compatible CLI for contaiNERD</a> : une CLI qui imite la CLI Docker mais en interagissant directement avec containerd. Elle permet aussi de bénéficier de certaines fonctionnalités de containerd qui ne sont pas prévues pour tout de suite dans Docker apparemment.</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2021/04/08/kubernetes-1-21-release-announcement/">Blog: Kubernetes 1.21: Power to the Community</a> : au programme de cette nouvelle version : Cronjobs GA, Immutable Secrets and ConfigMaps GA, IPv4/IPv6 dual-stack support, Graceful Node Shutdown, PersistentVolume Health Monitor mais aussi PodSecurityPolicy Deprecation et TopologyKeys Deprecation</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/">PodSecurityPolicy Deprecation: Past, Present, and Future</a>: article plus détaillé sur la dépréciation des PSP.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/releases/2021/04/02/podman-release-v3.1.0.html">Podman v3.1.0 Released</a> : ajout de la gestion des secrets, améliorations des commandes kube avec notamment la génération des PersistentVolumeClaim ou encore la gestion des propriétaires des volumes.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/vmware-tanzu/velero/releases/tag/v1.6.0">Velero 1.6.0</a> : améliorations diverses comme le support des identifiants par buckets (et non globaux uniquement), mise à jour de restic vers 0.12.0, etc.</li>
<li><a rel="noopener" target="_blank" href="https://docs.docker.com/compose/cli-command/">Compose CLI Tech Preview</a> : <code>compose</code> devrait devenir une sous-commande officiel de la CLI Docker ; on pourra alors faire <code>docker compose up -d</code></li>
<li><a rel="noopener" target="_blank" href="https://docs.docker.com/engine/release-notes/#20106">Docker 20.10.6</a> : version de maintenance avec le support des puces Apple Silicon M1.</li>
<li><a rel="noopener" target="_blank" href="https://twitter.com/stephenaugustus/status/1385622149776519168">Kubernetes : vers 3 releases par an au lieu de 4</a> : de quoi courrir un peu moins derrière les versions et à relier avec le support de chaque version étendue à 1 an depuis la 1.19.</li>
</ul>
<h3 id="data">Data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://sq.io/">sq: swiss-army knife for data</a> : le <code>jq</code> pour les données relationelles. Du SQL ou des fichiers Excel/CSV/JOSN/XML en entrée et les mêmes formats en sortie (et un peu plus).</li>
<li><a rel="noopener" target="_blank" href="https://antonz.org/sqlite-is-not-a-toy-database/">SQLite is not a toy database</a> : On a souvent une fausse image de sqlite - l’article permet de se mettre à jour...</li>
</ul>
<h3 id="iac">IaC</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://codeinthehole.com/tips/conditional-nested-blocks-in-terraform/">Conditional nested blocks in Terraform</a> : si les <a rel="noopener" target="_blank" href="https://www.terraform.io/docs/language/expressions/dynamic-blocks.html">dynamic blocks</a> avec terraform sont utiles pour peupler dynamiquement des structures à partir de tableaux/listes/objets, il peut aussi être utiliser pour gérer la présence conditionnelle de blocs.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/announcing-hashicorp-terraform-0-15-general-availability">Announcing HashiCorp Terraform 0.15 General Availability</a> : la plus grosse annonce étant que la 0.15 initie les travaux en vue de la release 1.0 ; pour ceux qui sont à jour, la mise à jour ne devait pas poser de problèmes (cf <a rel="noopener" target="_blank" href="https://www.terraform.io/upgrade-guides/0-15.html">guide</a>). Pour plus d'informations, cf <a rel="noopener" target="_blank" href="https://github.com/hashicorp/terraform/blob/v0.15/CHANGELOG.md">CHANGELOG</a>.</li>
<li><a rel="noopener" target="_blank" href="https://www.bleepingcomputer.com/news/security/hashicorp-is-the-latest-victim-of-codecov-supply-chain-attack/">HashiCorp is the latest victim of Codecov supply-chain attack</a> : victime de la <a rel="noopener" target="_blank" href="https://about.codecov.io/security-update/">supply chain attach de codecov</a>, Hashicorp vient de publier les versions patchées de Terraform des versions 0.11 à 0.15. Faites la mise à jour rapidement même si la clé volée n'a a priori pas été utilisée frauduleusement.</li>
</ul>
<h3 id="iot">IoT</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.tindie.com/products/redrobotics/pico-2-pi-adapter-board/">Pico 2 Pi Adapter Board</a> : un petit adapteur sympathique pour Raspeberry Pi Pico et vous permettre de brancher facilement vos composants sans soudure et mener ainsi vos expériences.</li>
<li><a rel="noopener" target="_blank" href="https://make.playpiper.com/">Piper Make</a> : Pour programmer facilement votre Raspberry Pi Pico en MicroPython mais avec une logique de blocs à la Scratch.</li>
<li><a rel="noopener" target="_blank" href="https://www.framboise314.fr/utilisation-des-bme680-et-rv3028-avec-raspberry-pi-pico/">Utilisation des BME680 et RV3028 avec Raspberry Pi Pico</a> : le composant BME680 permet d'évaluer la qualité de l'air - le projet permet donc de capturer et d'afficher cette information avec un Raspberry Pi. Son successeur, le BME688 dispose d'une pincée d'IA.</li>
<li><a rel="noopener" target="_blank" href="https://projetco2.fr/">Projet CO2</a> et <a rel="noopener" target="_blank" href="http://nousaerons.fr/makersco2/">Makers CO2</a> : pour mieux comprendre les enjeux autour de l'aération des pièces et comment faire vos capteurs.</li>
</ul>
<h3 id="observabilite-monitoring">Observabilité & Monitoring</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://bpetit.nce.re/fr/2021/03/coder-ses-dashboards-grafana-avec-grafonnet/">Coder ses dashboards Grafana avec Grafonnet</a> : Grafonnet est une extension de jsonnet ; il permet de déclarer ses dashboards Grafana via un lanage formalisé plutôt que de copier/coller des dashboards en JSON. Cela permet ainsi d'avoir une approche un peu plus "Dashboard as code".</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/03/25/grafana-7.5-released-loki-alerting-and-label-browser-for-logs-next-generation-pie-chart-and-more/">Grafana 7.5 released: Loki alerting and label browser for logs, next-generation pie chart, and more!</a> : un nouveau panel pour les "camembers" ("pie charts"), des améliorations pour les autres produits grafana (loki, tempo), ainsi qu'Elasticsearch, Postgresql et Cloudwatch et sur la version Entreprise.</li>
<li><a rel="noopener" target="_blank" href="https://vector.dev/releases/0.12.0/">Vector v0.12.0 Release Notes</a>, <a rel="noopener" target="_blank" href="https://vector.dev/releases/0.12.1">0.12.1</a>, <a rel="noopener" target="_blank" href="https://vector.dev/releases/0.12.2">0.12.2</a> : Comme indiqué en février, la release de Vector apportant leur nouveau langage de traitement "<a rel="noopener" target="_blank" href="https://vector.dev/docs/reference/vrl/">Vector Remap Language</a> est disponible, ainsi que des améliorations sur <code>vector top</code>, la source <code>internal_logs</code> et l'API GraphQL. Un guide de mise à jour vers la nouvelle syntaxe est disponible.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/release-announcement-telegraf-1-18-1/">Release Announcement: Telegraf 1.18.1</a> : version de maintenance</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/04/20/grafana-loki-tempo-relicensing-to-agplv3/">Grafana, Loki, and Tempo will be relicensed to AGPLv3</a> & <a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/04/20/qa-with-our-ceo-on-relicensing/">Q&A with Grafana Labs CEO Raj Dutt about our licensing changes</a> : les produits phares de Grafana Labs passent d'une licence <a rel="noopener" target="_blank" href="https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)">Apache 2</a> à <a rel="noopener" target="_blank" href="https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)">AGPLv3</a>. Les autres produits pourront rester sous licence ASL 2.0. L'AGPL étant contaminante, cela pourrait interdire l'usage de ces produits dans certains contextes, y compris à la CNCF. Vu l'implication de Grafana Labs dans le monde Prometheus, il va falloir suivre comment cela va se passer.</li>
</ul>
<h3 id="reseau">Réseau</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.kentik.com/blog/the-mystery-of-as8003/">The Mystery of AS8003</a> : Une entité inconnue jusque là mais liée à l'administration américaine a annoncé la gestion d'une très grande plage réseau. Les implications et les motivations sont encore à éclaircir. Le billet émet différents hypothèses. Le <a rel="noopener" target="_blank" href="https://twitter.com/d_feldman/status/1386042506022772738">thread twitter</a> associé est intéressant aussi.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://podcast.electro-monkeys.fr/926791/4996415-la-securite-dans-tous-ses-etats-detection-de-comportements-indesirables-grace-a-falco-avec-thomas-labarussias">Electro Monkeys - La sécurité dans tous ses états – détection de comportements indésirables grâce à Falco avec Thomas Labarussias</a> : Présentation des projets <a rel="noopener" target="_blank" href="https://github.com/falcosecurity/falco">falco</a> et <a rel="noopener" target="_blank" href="https://github.com/draios/sysdig">sysdig</a> qui permettent d'analyser les comportements de vos applications (conteneurisées ou pas) en se basant sur les syscalls.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/vault-1-7">Announcing HashiCorp Vault 1.7</a> : version mineure avec des améliorations internes au produit, sur la version entreprise et un peu au niveau UI.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.influxdays.com/emea-2021-virtual-experience/">InfluxDays EMEA 2021 Virtual Experience</a> : InfluxData organise la session européenne de sa conférence avec le point sur les différents produits et les développements à venir. Des nouvelles de l'écosystème (Grafana, etc) sont attendues aussi, ainsi que des retours clients. Des formations Flux et Telegraf sont aussi prévues respectivement les 10/11 mai et le 17 Mai.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/influxdata-releases-influxdb-notebooks-to-enhance-collaboration-for-teams-working-with-time-series-data/">InfluxData releases InfluxDB Notebooks to enhance collaboration for teams working with time series data</a> & <a rel="noopener" target="_blank" href="https://docs.influxdata.com/influxdb/cloud/notebooks/">Build notebooks in InfluxDB Cloud | InfluxDB Cloud Documentation</a> : InfluxData lance son offre de notebook intégré à sa plareforme InfluxDB (version cloud uniquement pour le moment)</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/complete-application-warp-10-tcp-stream-dashboard/">Build a Complete Application with Warp 10, from TCP Stream to Dashboard</a> : exemple complet de l'utilisation de la plateforme Warp 10 depuis l'ingestion des messages AIS des bateaux via un client TCP jusqu'à la visualisation des données après un passage par les étapes de stockage et nettoyage des données. Très intéressant même si je vais devoir relire tranquillement le billet pour bien comprendre certaines astuces et certains "raccourcis" au niveau du code.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/working-with-geoshapes/">Working with GEOSHAPEs</a> & <a rel="noopener" target="_blank" href="https://blog.senx.io/working-with-geoshapes-code-contest/">Working with GEOSHAPEs: code contest!</a> : un billet (et un concours) pour exploiter la dimension géospatiale de Warp 10.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/timescale/timescaledb/releases/tag/2.2.0">TimescaleDB 2.2.0</a> : diverses améliorations mais surtout une annonce sur la fin de support de Postgresql 11 à compter de mi-juin et de la prochaine version de TimescaleDB. C'est justifié par l'absence d'une fonctionnalité dans Postgresql 11.x et requise pour la prochaine version de TimescaleDB.</li>
</ul>
Web, Ops, Data et Time Series - Avril 20212021-04-28T09:30:00+02:002021-04-28T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-data-timeseries-avril-2021/<h3 id="code">Code</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.engineering.publicissapient.fr/2021/04/08/docteur-jai-commite-8-go-dans-mon-git-cest-grave/">Docteur, j’ai commité 8 Go dans mon Git. C’est grave ?</a> : un petit exemple de l'utilisation de <a rel="noopener" target="_blank" href="https://github.com/newren/git-filter-repo">git-filter-repo</a> pour nettoyer son historique git de fichiers inutiles.</li>
<li><a rel="noopener" target="_blank" href="https://blog.stephane-robert.info/post/gitlab-trigger/">Les pipelines parent-enfant de gitlab-ci</a> : article sur la modularisation de gitlab-ci avec les pipelines parent/enfant au sein d'un même dépôt de code ou entre plusieurs dépot avec passage de variables entre eux.</li>
<li><a rel="noopener" target="_blank" href="https://news.ycombinator.com/item?id=26919510">Minio Changes License to AGPL</a> : Minio passe (aussi) son code en AGPL, l'annonce officielle n'est pas encore arrivée.</li>
</ul>
<h3 id="conteneur-et-orchestration">Conteneur et orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://podcast.electro-monkeys.fr/926791/5088215-docker-compose-avec-nicolas-de-loof">Electro Monkeys - Docker Compose avec Nicolas de Loof</a> : Retour sur la Developper Experience autour de Docker, l'historique et le futur de docker-compose, la création de la spécification Compose, les intégrations AWS/ECS et Azure/ACI, l'intégration Kubernetes, etc.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/nttlabs/nerdctl-359311b32d0e">nerdctl: Docker-compatible CLI for contaiNERD</a> : une CLI qui imite la CLI Docker mais en interagissant directement avec containerd. Elle permet aussi de bénéficier de certaines fonctionnalités de containerd qui ne sont pas prévues pour tout de suite dans Docker apparemment.</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2021/04/08/kubernetes-1-21-release-announcement/">Blog: Kubernetes 1.21: Power to the Community</a> : au programme de cette nouvelle version : Cronjobs GA, Immutable Secrets and ConfigMaps GA, IPv4/IPv6 dual-stack support, Graceful Node Shutdown, PersistentVolume Health Monitor mais aussi PodSecurityPolicy Deprecation et TopologyKeys Deprecation</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2021/04/06/podsecuritypolicy-deprecation-past-present-and-future/">PodSecurityPolicy Deprecation: Past, Present, and Future</a>: article plus détaillé sur la dépréciation des PSP.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/releases/2021/04/02/podman-release-v3.1.0.html">Podman v3.1.0 Released</a> : ajout de la gestion des secrets, améliorations des commandes kube avec notamment la génération des PersistentVolumeClaim ou encore la gestion des propriétaires des volumes.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/vmware-tanzu/velero/releases/tag/v1.6.0">Velero 1.6.0</a> : améliorations diverses comme le support des identifiants par buckets (et non globaux uniquement), mise à jour de restic vers 0.12.0, etc.</li>
<li><a rel="noopener" target="_blank" href="https://docs.docker.com/compose/cli-command/">Compose CLI Tech Preview</a> : <code>compose</code> devrait devenir une sous-commande officiel de la CLI Docker ; on pourra alors faire <code>docker compose up -d</code></li>
<li><a rel="noopener" target="_blank" href="https://docs.docker.com/engine/release-notes/#20106">Docker 20.10.6</a> : version de maintenance avec le support des puces Apple Silicon M1.</li>
<li><a rel="noopener" target="_blank" href="https://twitter.com/stephenaugustus/status/1385622149776519168">Kubernetes : vers 3 releases par an au lieu de 4</a> : de quoi courrir un peu moins derrière les versions et à relier avec le support de chaque version étendue à 1 an depuis la 1.19.</li>
</ul>
<h3 id="data">Data</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://sq.io/">sq: swiss-army knife for data</a> : le <code>jq</code> pour les données relationelles. Du SQL ou des fichiers Excel/CSV/JOSN/XML en entrée et les mêmes formats en sortie (et un peu plus).</li>
<li><a rel="noopener" target="_blank" href="https://antonz.org/sqlite-is-not-a-toy-database/">SQLite is not a toy database</a> : On a souvent une fausse image de sqlite - l’article permet de se mettre à jour...</li>
</ul>
<h3 id="iac">IaC</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://codeinthehole.com/tips/conditional-nested-blocks-in-terraform/">Conditional nested blocks in Terraform</a> : si les <a rel="noopener" target="_blank" href="https://www.terraform.io/docs/language/expressions/dynamic-blocks.html">dynamic blocks</a> avec terraform sont utiles pour peupler dynamiquement des structures à partir de tableaux/listes/objets, il peut aussi être utiliser pour gérer la présence conditionnelle de blocs.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/announcing-hashicorp-terraform-0-15-general-availability">Announcing HashiCorp Terraform 0.15 General Availability</a> : la plus grosse annonce étant que la 0.15 initie les travaux en vue de la release 1.0 ; pour ceux qui sont à jour, la mise à jour ne devait pas poser de problèmes (cf <a rel="noopener" target="_blank" href="https://www.terraform.io/upgrade-guides/0-15.html">guide</a>). Pour plus d'informations, cf <a rel="noopener" target="_blank" href="https://github.com/hashicorp/terraform/blob/v0.15/CHANGELOG.md">CHANGELOG</a>.</li>
<li><a rel="noopener" target="_blank" href="https://www.bleepingcomputer.com/news/security/hashicorp-is-the-latest-victim-of-codecov-supply-chain-attack/">HashiCorp is the latest victim of Codecov supply-chain attack</a> : victime de la <a rel="noopener" target="_blank" href="https://about.codecov.io/security-update/">supply chain attach de codecov</a>, Hashicorp vient de publier les versions patchées de Terraform des versions 0.11 à 0.15. Faites la mise à jour rapidement même si la clé volée n'a a priori pas été utilisée frauduleusement.</li>
</ul>
<h3 id="iot">IoT</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.tindie.com/products/redrobotics/pico-2-pi-adapter-board/">Pico 2 Pi Adapter Board</a> : un petit adapteur sympathique pour Raspeberry Pi Pico et vous permettre de brancher facilement vos composants sans soudure et mener ainsi vos expériences.</li>
<li><a rel="noopener" target="_blank" href="https://make.playpiper.com/">Piper Make</a> : Pour programmer facilement votre Raspberry Pi Pico en MicroPython mais avec une logique de blocs à la Scratch.</li>
<li><a rel="noopener" target="_blank" href="https://www.framboise314.fr/utilisation-des-bme680-et-rv3028-avec-raspberry-pi-pico/">Utilisation des BME680 et RV3028 avec Raspberry Pi Pico</a> : le composant BME680 permet d'évaluer la qualité de l'air - le projet permet donc de capturer et d'afficher cette information avec un Raspberry Pi. Son successeur, le BME688 dispose d'une pincée d'IA.</li>
<li><a rel="noopener" target="_blank" href="https://projetco2.fr/">Projet CO2</a> et <a rel="noopener" target="_blank" href="http://nousaerons.fr/makersco2/">Makers CO2</a> : pour mieux comprendre les enjeux autour de l'aération des pièces et comment faire vos capteurs.</li>
</ul>
<h3 id="observabilite-monitoring">Observabilité & Monitoring</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://bpetit.nce.re/fr/2021/03/coder-ses-dashboards-grafana-avec-grafonnet/">Coder ses dashboards Grafana avec Grafonnet</a> : Grafonnet est une extension de jsonnet ; il permet de déclarer ses dashboards Grafana via un lanage formalisé plutôt que de copier/coller des dashboards en JSON. Cela permet ainsi d'avoir une approche un peu plus "Dashboard as code".</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/03/25/grafana-7.5-released-loki-alerting-and-label-browser-for-logs-next-generation-pie-chart-and-more/">Grafana 7.5 released: Loki alerting and label browser for logs, next-generation pie chart, and more!</a> : un nouveau panel pour les "camembers" ("pie charts"), des améliorations pour les autres produits grafana (loki, tempo), ainsi qu'Elasticsearch, Postgresql et Cloudwatch et sur la version Entreprise.</li>
<li><a rel="noopener" target="_blank" href="https://vector.dev/releases/0.12.0/">Vector v0.12.0 Release Notes</a>, <a rel="noopener" target="_blank" href="https://vector.dev/releases/0.12.1">0.12.1</a>, <a rel="noopener" target="_blank" href="https://vector.dev/releases/0.12.2">0.12.2</a> : Comme indiqué en février, la release de Vector apportant leur nouveau langage de traitement "<a rel="noopener" target="_blank" href="https://vector.dev/docs/reference/vrl/">Vector Remap Language</a> est disponible, ainsi que des améliorations sur <code>vector top</code>, la source <code>internal_logs</code> et l'API GraphQL. Un guide de mise à jour vers la nouvelle syntaxe est disponible.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/release-announcement-telegraf-1-18-1/">Release Announcement: Telegraf 1.18.1</a> : version de maintenance</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/04/20/grafana-loki-tempo-relicensing-to-agplv3/">Grafana, Loki, and Tempo will be relicensed to AGPLv3</a> & <a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/04/20/qa-with-our-ceo-on-relicensing/">Q&A with Grafana Labs CEO Raj Dutt about our licensing changes</a> : les produits phares de Grafana Labs passent d'une licence <a rel="noopener" target="_blank" href="https://tldrlegal.com/license/apache-license-2.0-(apache-2.0)">Apache 2</a> à <a rel="noopener" target="_blank" href="https://tldrlegal.com/license/gnu-affero-general-public-license-v3-(agpl-3.0)">AGPLv3</a>. Les autres produits pourront rester sous licence ASL 2.0. L'AGPL étant contaminante, cela pourrait interdire l'usage de ces produits dans certains contextes, y compris à la CNCF. Vu l'implication de Grafana Labs dans le monde Prometheus, il va falloir suivre comment cela va se passer.</li>
</ul>
<h3 id="reseau">Réseau</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.kentik.com/blog/the-mystery-of-as8003/">The Mystery of AS8003</a> : Une entité inconnue jusque là mais liée à l'administration américaine a annoncé la gestion d'une très grande plage réseau. Les implications et les motivations sont encore à éclaircir. Le billet émet différents hypothèses. Le <a rel="noopener" target="_blank" href="https://twitter.com/d_feldman/status/1386042506022772738">thread twitter</a> associé est intéressant aussi.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://podcast.electro-monkeys.fr/926791/4996415-la-securite-dans-tous-ses-etats-detection-de-comportements-indesirables-grace-a-falco-avec-thomas-labarussias">Electro Monkeys - La sécurité dans tous ses états – détection de comportements indésirables grâce à Falco avec Thomas Labarussias</a> : Présentation des projets <a rel="noopener" target="_blank" href="https://github.com/falcosecurity/falco">falco</a> et <a rel="noopener" target="_blank" href="https://github.com/draios/sysdig">sysdig</a> qui permettent d'analyser les comportements de vos applications (conteneurisées ou pas) en se basant sur les syscalls.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/vault-1-7">Announcing HashiCorp Vault 1.7</a> : version mineure avec des améliorations internes au produit, sur la version entreprise et un peu au niveau UI.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.influxdays.com/emea-2021-virtual-experience/">InfluxDays EMEA 2021 Virtual Experience</a> : InfluxData organise la session européenne de sa conférence avec le point sur les différents produits et les développements à venir. Des nouvelles de l'écosystème (Grafana, etc) sont attendues aussi, ainsi que des retours clients. Des formations Flux et Telegraf sont aussi prévues respectivement les 10/11 mai et le 17 Mai.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/influxdata-releases-influxdb-notebooks-to-enhance-collaboration-for-teams-working-with-time-series-data/">InfluxData releases InfluxDB Notebooks to enhance collaboration for teams working with time series data</a> & <a rel="noopener" target="_blank" href="https://docs.influxdata.com/influxdb/cloud/notebooks/">Build notebooks in InfluxDB Cloud | InfluxDB Cloud Documentation</a> : InfluxData lance son offre de notebook intégré à sa plareforme InfluxDB (version cloud uniquement pour le moment)</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/complete-application-warp-10-tcp-stream-dashboard/">Build a Complete Application with Warp 10, from TCP Stream to Dashboard</a> : exemple complet de l'utilisation de la plateforme Warp 10 depuis l'ingestion des messages AIS des bateaux via un client TCP jusqu'à la visualisation des données après un passage par les étapes de stockage et nettoyage des données. Très intéressant même si je vais devoir relire tranquillement le billet pour bien comprendre certaines astuces et certains "raccourcis" au niveau du code.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/working-with-geoshapes/">Working with GEOSHAPEs</a> & <a rel="noopener" target="_blank" href="https://blog.senx.io/working-with-geoshapes-code-contest/">Working with GEOSHAPEs: code contest!</a> : un billet (et un concours) pour exploiter la dimension géospatiale de Warp 10.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/timescale/timescaledb/releases/tag/2.2.0">TimescaleDB 2.2.0</a> : diverses améliorations mais surtout une annonce sur la fin de support de Postgresql 11 à compter de mi-juin et de la prochaine version de TimescaleDB. C'est justifié par l'absence d'une fonctionnalité dans Postgresql 11.x et requise pour la prochaine version de TimescaleDB.</li>
</ul>
Web, Ops & Data - Février 20212021-02-24T09:30:00+01:002021-02-24T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-fevrier-2021/<h3 id="container-et-orchrestration">Container et orchrestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://mrkaran.dev/posts/home-server-nomad/">Running Nomad for home server</a> : pour avoir mené une expérience très similaire sur le mois de janvier, je me retrouve complètement dans ce retour d'expérience sur nomad (vs kubernetes dans une certaine mesure). Le trio nomad/consul/vault permet de faire des choses assez proches de ce que l'on peut faire avec kubernetes et parfois même de façon plus simple. Et ce, avec moins de couches intermédiaires (CSI, CNI, etc) mais aussi quelques fonctionnalités en moins. Un compromis assez réussi je trouve entre un docker nu et/ou avec docker-compose et un kubernetes.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/releases/2021/02/11/podman-release-v3.0.0.html">Podman 3.0 has been released!</a> : <a rel="noopener" target="_blank" href="https://www.redhat.com/sysadmin/podman-docker-compose">support de docker-compose</a>, support des noms courts d'image, amélioration sur le réseau, apport de la dernière version de buildah, correction d'une CVE, etc.</li>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/donating-docker-distribution-to-the-cncf/">Donating Docker Distribution to the CNCF</a> : Docker Inc donne sa registry à la fondation CNCF pour fédérer les initiatives autour d'un même standard et élargir le champ des contributeurs/mainteneurs.</li>
<li><a rel="noopener" target="_blank" href="https://blog.octo.com/panorama-des-outils-de-securite-autour-des-conteneurs/">Panorama des outils de sécurité autour des conteneurs</a> : comparaison des outils de bonnes pratiques et d'analyses de vulnérabilités des containers docker pour améliorer la sécurité de vos conteneurs.</li>
</ul>
<h3 id="code">Code</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.golang.org/gopls-vscode-go">Gopls on by default in the VS Code Go extension - The Go Blog</a> : amélioration du support de Go dans VSCode.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/caramelomartins/awesome-linters">Awesome Linters</a> : si vous cherchez un linter, vous devriez le trouver dans ce dépot</li>
<li><a rel="noopener" target="_blank" href="https://jfrog.com/blog/into-the-sunset-bintray-jcenter-gocenter-and-chartcenter/">Into the Sunset on May 1st: Bintray, JCenter, GoCenter, and ChartCenter</a> : JFrog va arrêter les services Bintray, JCenter, GoCenter et ChartCenter le 1er mai. La proposition est de migrer sur l'offre JFrog Cloud ou de trouver une alternative.</li>
</ul>
<h3 id="monitoring-observabilite">Monitoring & observabilité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://investors.datadoghq.com/news-releases/news-release-details/datadog-acquires-timber-technologies">Datadog Acquires Timber Technologies | Datadog</a> : Datadog achète la société Timber Technologies qui édite le project <a rel="noopener" target="_blank" href="https://vector.dev/">vector</a>. Pourvu que cela ne nuise pas au projet.</li>
<li><a rel="noopener" target="_blank" href="https://investors.datadoghq.com/news-releases/news-release-details/datadog-acquires-timber-technologies">Datadog Signs Definitive Agreement to Acquire Sqreen | Datadog</a> : Datadog achète aussi Sqreen qui était dans le domaine de la sécurité.</li>
<li><a rel="noopener" target="_blank" href="https://vector.dev/blog/vector-remap-language/">Vector Remap Language</a> : la version 0.12 de vector va apporter un nouveau langage plus fonctionnel pour définir le traitement sur ses logs. A tester !</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/building-telegraf-assistant-uc-berkeley-codebase/">Building a Telegraf Assistant – UC Berkeley Codebase</a> : des étudiants de l'universite de Berkeley ont travaillé sur la capacité de pousser une configuration à distance à telegraf. A voir si le code arrive jusque dans le produit telegraf, ce serait sympathique en tous cas !</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/blog/time-series-analytics-for-postgresql-introducing-the-timescale-analytics-project/">Time-Series Analytics for PostgreSQL: Introducing the Timescale Analytics Project</a> : Timescale va publier des fonctions orientées time series sous la forme d'extensions postgres. A priori réutilisable sans utiliser le reste de la base Timescale (à confirmer). De quoi simplifier certaines manipulations ?!</li>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/blog/timescaledb-2-0-is-now-generally-available/">TimescaleDB 2.0 is now Generally Available</a> : annonce officielle de la sortie de TimescaleDB 2.0 même si la 2.0.0 est sortie à Noel et la <a rel="noopener" target="_blank" href="https://github.com/timescale/timescaledb/releases/tag/2.0.1">2.0.1</a> fin janvier.</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/02/04/grafana-7.4-released-next-generation-graph-panel-with-30-fps-live-streaming-prometheus-exemplar-support-trace-to-logs-and-more/">Grafana 7.4 released: Next-generation graph panel with 30 fps live streaming, Prometheus exemplar support, trace to logs, and more</a> : <a rel="noopener" target="_blank" href="https://grafana.com/blog/2021/02/10/how-the-new-time-series-panel-brings-major-performance-improvements-and-new-visualization-features-to-grafana-7.4/">amélioration des panels</a>, mode livrestream pour un panel, support des variables dans les notifications d'alertes et plein d'autres choses.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/kapacitor-1-5-8-rollback-announcement/">Kapacitor 1.5.8 — Rollback Announcement | InfluxData</a> : Rollback de la version 1.5.8 de Kapacitor (la couche de processing en mode batch/streaming dans un contexte InfluxDB 1.x) pour cause d'opération pouvant conduire à de la perte de données. Un correctif est attendu sous peu.</li>
<li><a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/tldr-tech-tips-how-to-monitor-states-with-influxdb/">TL;DR InfluxDB Tech Tips – How to Monitor States with InfluxDB</a> : ce billet est intéressant pour compléter le billet sur <a href="https://cerenit.fr/blog/web-ops-and-data-fevrier-2021/r/blog/timeseries-state-duration/">le calcul de la durée d'un état avec des timeseries</a>. Notamment, l'apport de la fonction <code>monitor.stateChanges()</code> et <code>monitor.stateChangesOnly()</code>.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/senx/warp10-platform/releases/tag/2.7.3">Warp 10 2.7.3</a> : version de maintenance.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/review-of-smoothing-transforms-in-warplib/">A review of smoothing transforms in WarpLib</a> : revue des possibilités de "lissage" de vos séries avec différents algorithmes inclus dans Warp 10 de la moyenne glissante simple à des algorithmes capables d'excluer les anomalies et pics ponctuels.</li>
</ul>
<p>Si vous êtes en manque de news, vous pouvez aller consulter (et vous abonner) aux brèves du <a rel="noopener" target="_blank" href="https://bigdatahebdo.com/breve/">BigData Hebdo</a></p>
Web, Ops & Data - Décembre 20202020-12-16T09:30:00+01:002020-12-16T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-decembre-2020/<h3 id="containers-et-orchestration">Containers et orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://electro-monkeys.fr/?p=395">Electro Monkeys #37 – Podman, l’alternative de Redhat à Docker avec Benjamin Vouillaume</a> : <a rel="noopener" target="_blank" href="https://twitter.com/nsteinmetz/status/1328093089815273478">je me demandais</a> si <a rel="noopener" target="_blank" href="https://podman.io/">podman</a> permettait un management de containers à distance et l'étendue de son écosystème. Le podcast permet de compléter le tour du propriétaire et de se faire une bonne idée de son positionnement.</li>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/how-to-deploy-on-remote-docker-hosts-with-docker-compose/">How to deploy on remote Docker hosts with docker-compose</a> : dans la <a rel="noopener" target="_blank" href="https://twitter.com/nsteinmetz/status/1328093089815273478">même quête</a>, je me demandais s'il était possible de piloter un noeud docker à distance quand je me suis rappelé qu'il était possible de le faire au travers d'une connexion ssh. En creusant un peu plus, j'ai découvert la notion de <a rel="noopener" target="_blank" href="https://docs.docker.com/engine/context/working-with-contexts/">contexte</a> qui permet ainsi de cibler un noeud docker, docker swarm ou kubernetes.</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/">Don't Panic: Kubernetes and Docker</a> et <a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2020/12/02/dockershim-faq/">Dockershim Deprecation FAQ</a> : A partir de kubernetes 1.20 (fin 2020) et définitivement à partir de la version 1.23 (fin 2021), le retrait du binaire docker comme CRI de Kubernetes est annoncé. Cela ne devrait pas changer grand chose et c'est essentiellement de la plomberie interne. Plutôt que de passer par Dockershim qui implémentait l'interface CRI et qui discutait ensuite avec Docker pour lancer les conteneurs via containerd, l'appel sera directement fait à containerd. Il n'y a que ceux qui montent la socket docker dans les pods qui vont avoir un souci. Si c'est pour builder des images, il y a des alternatives comme <code>img</code>, <code>kaniko</code>, etc. Pour les autres cas, il faudra peut être passer par l'API kubernetes ou trouver les alternatives qui vont bien.</li>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/what-developers-need-to-know-about-docker-docker-engine-and-kubernetes-v1-20/">What developers need to know about Docker, Docker Engine, and Kubernetes v1.20</a> et <a rel="noopener" target="_blank" href="https://www.mirantis.com/blog/mirantis-to-take-over-support-of-kubernetes-dockershim-2/">Mirantis to take over support of Kubernetes dockershim</a> : Mirantis et Docker Inc vont assurer le support de cette interface <code>dockershim</code> pour permettre à ceux qui ont en besoin de pouvoir continuer à l'utliiser. La limite étant que si vous êtes sur du service managé et que votre provider ne le fournit pas, vous ne pourrez pas l'utiliser...</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2020/12/08/kubernetes-1-20-release-announcement/">Kubernetes 1.20: The Raddest Release</a> : voilà, la version 1.20 est sortie et apporte son lot de nouveautés et de stabilisation.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/announcing-general-availability-of-hashicorp-nomad-1-0">Announcing General Availability of HashiCorp Nomad 1.0</a> : Nomad 1.0 est également disponible.</li>
<li><a rel="noopener" target="_blank" href="https://www.docker.com/blog/introducing-docker-engine-20-10/">Introducing Docker Engine 20.10 - Docker Blog</a> : Docker 20.10 arrive avec des profondes nouveautés comme le support des cgroupsv2 et un mode rootless, <code>docker logs</code> fonctionne avec tous les drivers de log et non unqiement json & journald et plein d'autres améliorations/harmonisations au niveau de la CLI. Pour ceux sous Fedora qui avaient bidouillé avec firewalld précédemment pour faire fonctionner docker et qui ont un problème lié à l'interface docker0 au démarrage du service docker, allez voir <a rel="noopener" target="_blank" href="https://stackoverflow.com/a/65230891">par ici</a>.</li>
<li><a rel="noopener" target="_blank" href="https://docs.docker.com/engine/release-notes/#version-2010">Docker Engine Release Notes - Version 20.10</a> : En plus des points précédents, il y a l'arrivée des jobs dans swarm - depuis le temps que je l'attendais 🤩 (même si on peut se toujours se poser la question de la pérénnité de swarm depuis qu'il a été racheté par Mirantis)</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/nttlabs/docker-20-10-59cc4bd59d37">New features in Docker 20.10 (Yes, it’s alive)</a> : un billet décrivant plus en détail certaines feautres de docker 20.10 comme support Fedora/CentOS, le rootless mode, l'option <code>-mount</code>, les jpbs swarm et une synthèse de l'actualité de l'écosystème docker.</li>
<li><a rel="noopener" target="_blank" href="https://podman.io/releases/2020/12/14/podman-release-v2.2.0.html">Podman Release 2.2.0</a> : ajout des commandes <code>network (dis)connect</code>, support des alias avec des noms courts, amélioration des commandes <code>play|generate kube</code> et capacité de monter une image OCI dans un container.</li>
</ul>
<h3 id="observabilite">Observabilité</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://vector.dev/">Vector - Collect, transform, & route all observability data with one simple tool.</a> (<a rel="noopener" target="_blank" href="https://www.clever-cloud.com/fr/podcast/episode24/">via</a>) : vector est un outil en rust qui permet de collecter et manipuler des métriques/logs/événements et de les envoyer vers différentes destinations. De quoi remplacer filebeat/journalbeat voire même telegraf ? ;-)</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2020/12/15/announcing-amazon-managed-service-for-grafana/">Our new partnership with AWS gives Grafana users more options</a> : AWS vient d'annoncer un service managé pour Prometheus basé sur Cortex et pour Grafana (version Entrepsise). Grafana et Cortex étant des projets édités par Grafana Labs sous licence OSS (et des déclinaisons Cloud et Entreprise). AWS changerait-il sa façon de travailler avec les projets OSS lorsqu'il souhaite en faire des services managés et prendre ainsi une attitude plus positive vis à vis de la communauté OSS ?</li>
</ul>
<h3 id="oss">OSS</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://joemorrison.medium.com/death-of-an-open-source-business-model-62bc227a7e9b">Death of an Open Source Business Model</a> : Analyse du passage de Mapbox GL JS v2 sous licence propriétaire, le modèle de l'open core et les menaces des top cloud providers sur le reste de l'économie du logiciel. On peut étendre cela aussi "VC funded OSS company".</li>
</ul>
<h3 id="systeme">Système</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.centos.org/2020/12/future-is-centos-stream/">CentOS Project shifts focus to CentOS Stream</a>, <a rel="noopener" target="_blank" href="https://www.redhat.com/en/blog/centos-stream-building-innovative-future-enterprise-linux">CentOS Stream: Building an innovative future for enterprise Linux</a> et la <a rel="noopener" target="_blank" href="https://centos.org/distro-faq/">FAQ</a> associée : Historiquement CentOS Linux était batie sur les sources de Red Hat Entreprise Linux un fois celle-ci disponible. CentOS Stream renverse un peu la tendance avec un cycle d'intégration plutôt Fedora -> CentOS Stream -> RHEL. L'initiative CentOS Stream avait été annoncée en septembre 2019 et ce changement permet donc aux équipes CentOS de se focoaliser sur une seule version (CentOS Stream) et non plus deux versions (CentOS Stream et CentOS Linux). CentOS Linux 7 sera maintenue jusqu'à la fin du support de RHEL 7 et et CentOS 8 jusqu'à fin 2021 (et non pas 2029 comme prévu). Il n'y aura pas de version 9 de CentOS Linux. A tester pour voir si CentOS Stream est plus stable que Fedora mais moins conservateur que RHEL et pourrait alors s'avérer être un bon compromis.</li>
<li><a rel="noopener" target="_blank" href="http://crunchtools.com/before-you-get-mad-about-the-centos-stream-change-think-about/">Before You Get Mad About The CentOS Stream Change, Think About…</a> : un billet assez long d'un employé de Red Hat qui exprime son opinion et cherche à remettre les choses en perspective en dépassionnant le débat.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.ptsm.io/#ptsm-8">PTSM Edition #8 - Amazon TimeStream 101</a> : Edition du Paris time Series Meetup sur AWS Timestream</li>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/blog/timescaledb-vs-amazon-timestream-6000x-higher-inserts-175x-faster-queries-220x-cheaper/">TimescaleDB vs. Amazon Timestream: 6000x higher inserts, 5-175x faster queries, 150x-220x cheaper</a> : avec toutes les réserves habitudelles sur les benchmarks, Timescale a comparé son produit avec AWS Timestream et la conclusion semble clairement en faveur de Timescaledb. A noter que <a rel="noopener" target="_blank" href="https://docs.aws.amazon.com/timestream/latest/developerguide/getting-started.java-v1.code-samples.write-to-table.html#getting-started.java-v1.code-samples.write-data.upserts">l'update des données</a> est arrivé dans AWS Timestream entre temps.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/truly-dynamic-dashboards-as-code/">Truly Dynamic Dashboards as Code</a> : les équipes de SenX ont implémenté leur vision du "Dashboards as Code" sous le nom Discovery. Discovery veut aller plus loin que la simple description d'un dashboard comme on peut le voir dans Grafana ou InfluxDB 2.0 en apportant une touche de dynamisme et de génération dynamique des dashboards en fonction des élements obtenus (ex si valeur X > Y alors afficher la procédure AAA de résolution d'incident). J'ai commencé à jouer avec, un billet de blog sur ce sujet devrait bientôt arriver.</li>
<li><a rel="noopener" target="_blank" href="https://ourownstory.github.io/neural_prophet/">NeuralProphet</a> : un modèle neuronal orienté série temporelles, inspiré de <a rel="noopener" target="_blank" href="https://github.com/facebook/prophet">Facebook Prophet</a> et développé avce PyTorch.</li>
<li><a rel="noopener" target="_blank" href="https://docs.influxdata.com/influxdb/v2.0/reference/release-notes/influxdb/#v2-0-3-general-availability-2020-12-14">Release Notes InfluxDB 2.0.3</a> et <a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/release-announcement-influxdb-oss-2-0-3/">Release Announcement: InfluxDB OSS 2.0.3</a> : build arm64 en preview, un petit conflit de packaging entre <code>influxdb</code> et <code>influxdb2</code> à passer pour ceux qui étaient déjà en 2.0 et ceci afin d'éviter que des gens en 1.x passent involontairement en 2.x, le "delete with predicate" a été réactivé, améliorations sur le process d'upgrade, des commandes autour des actions en mode V1, mise à jour de flux, et plein d'autres corrections/améliorations.</li>
</ul>
<h3 id="web">Web</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://almanac.httparchive.org/fr/2020/">Web Almanac 2020 - Rapport annuel de HTTP Archive sur l’état du Web</a> : une synthèse de l'état du web d'après HTTP Archive sur une base de 7.5 millions de sites testés, soit 31.3 To de données traitées. De quoi relativisez un peu les biais de notre bulle technologique : non tout le monde ne fait pas du React/Angular/Vue.js par ex mais plutôt du JQuery ! Suivant vos usages, plein d'enseignements et de choses intéressantes à tirer de cette synthèse.</li>
</ul>
<p>Il ne me reste plus qu'à vous souhaiter de bonnes fêtes de fin d'année et on se retrouve l'année prochaine !</p>
Docker et déploiement distant : tout est histoire de contexte2020-12-08T21:00:00+01:002020-12-08T21:00:00+01:00
Unknown
https://cerenit.fr/blog/docker-context-remote-deployment/<p>Kubernetes, c'est bien mais parfois on veut faire des choses plus simples et on n'a pas forcément besoin d'avoir un système distribué ou d'une forte disponibilité. Pour autant, il est agréable avec kubernetes de pouvoir interagit à distance avec l'API au travers de <code>kubectl</code>. Je me suis donc mis en <a rel="noopener" target="_blank" href="https://twitter.com/nsteinmetz/status/1328093089815273478">quête d'une alternative</a>. Partir sur k3s avec un déploiement mono-node ? Partir sur docker/docker-compose/docker-swarm ?</p>
<p>Je me souvenais que l'on pouvait exposer la socket docker sur le réseau en TCP et authentification par certificat mais cela ne me plaisait pas beaucoup. Je me suis alors rappelé que l'on pouvait interagir avec un hote docker via une connection ssh. En continuant à creuser, je suis tomber sur <a rel="noopener" target="_blank" href="https://docs.docker.com/engine/context/working-with-contexts/">les contextes dans Docker</a> et ce billet <a rel="noopener" target="_blank" href="https://www.docker.com/blog/how-to-deploy-on-remote-docker-hosts-with-docker-compose/">How to deploy on remote Docker hosts with docker-compose</a>. Et là : 🤩</p>
<p>Alors, certes, pas de secrets, configmaps ou cronjobs mais un déploiement remote que je peux automatiser dans gitlab et/ou avec lequel je peux interagir à distance 😍</p>
<p>Création d'un contexte puis utilisation d'un contexte :</p>
<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span># Création du contexte docker
</span><span>docker context create mon-serveur ‐‐docker “host=ssh://user@monserveur”
</span><span>
</span><span># Lister les contextes docker existant
</span><span>docker context ls
</span><span>
</span><span># Utiliser un contexte
</span><span>docker context use mon-serveur
</span><span>
</span><span># Vérifier le bon fonctionnement de la cli docker
</span><span>docker ps
</span><span>[liste de conteneurs tournant sur la machine "mon-serveur"]
</span><span>
</span><span># Vérifier le bon fonctionnement de la cli docker-compose
</span><span>cd /path/to/docker/compose/project
</span><span>docker-compose ps
</span></code></pre>
<p>Pour que cela fonctionne, en plus des versions récentes de <code>docker</code> et <code>docker-compose</code> coté client et serveur. Il vous faut aussi une version récent de <code>paramiko</code> coté client. Celle présente dans Debian 10 n'est pas assez à jour par ex, il a fallu passer par <code>pip3 install paramiko</code>. Il faut aussi avoir une authentification par clé pour se simplifier la vie.</p>
<p>Pour <code>docker-compose</code>, vous avez deux solutions pour utiliser un contexte distant :</p>
<pre style="background-color:#2b303b;color:#c0c5ce;"><code><span># En deux commandes
</span><span>docker context use <remote context>
</span><span>docker-compose <command>
</span><span>
</span><span># En une commande
</span><span>docker-compose --context <remote context> <command>
</span></code></pre>
<p>Dans gitlab, dans le fichier <code>.gitlab-ci.yml</code>, on peut alors profiter de cette intégration de la façon suivante ; je prends l'exemple du déploiement du site du <a rel="noopener" target="_blank" href="https://www.ptsm.io/">Paris Time Series Meetup</a>.</p>
<p>Tout d'abord, dans mon fichier <code>docker-compose.yml</code>, j'ai mis un place holder <code>IMAGE</code> qui sera remplacé par la référence de mon image docker fabriquée par gitlab-ci :</p>
<pre data-lang="yaml" style="background-color:#2b303b;color:#c0c5ce;" class="language-yaml "><code class="language-yaml" data-lang="yaml"><span style="color:#bf616a;">version</span><span>: '</span><span style="color:#a3be8c;">3.8</span><span>'
</span><span style="color:#bf616a;">services</span><span>:
</span><span> </span><span style="color:#bf616a;">web</span><span>:
</span><span> </span><span style="color:#bf616a;">image</span><span>: </span><span style="color:#a3be8c;">IMAGE
</span><span> </span><span style="color:#bf616a;">labels</span><span>:
</span><span> [</span><span style="color:#d08770;">...</span><span>]
</span><span> </span><span style="color:#bf616a;">restart</span><span>: </span><span style="color:#a3be8c;">always
</span></code></pre>
<p>Ensuite, dans gitlab-ci :</p>
<ul>
<li>le job "publish" génère la version html du site et le stock dans un artefact gitlab.</li>
<li>le job "kaniko" va générer l'image docker contenant la version html du site. Pour passer la version de l'image, je stocke l'information dans un fichier <code>docker.env</code>. Ce fichier sera sauvegardé en fin de job sous la forme d'un artefact disponible pour le job "docker".</li>
<li>le job "docker" recupère ce qui était dans le <code>docker.env</code> sous la forme de variable d'environnement. Il remplace ensuite <code>IMAGE</code> par sa vraie valeur. On initialise le contexte docker pour se connecter au serveur cible et on peut alors réaliser les actions habituelles avec <code>docker-compose</code>.</li>
</ul>
<pre data-lang="yaml" style="background-color:#2b303b;color:#c0c5ce;" class="language-yaml "><code class="language-yaml" data-lang="yaml"><span>---
</span><span style="color:#bf616a;">stages</span><span>:
</span><span> - </span><span style="color:#a3be8c;">publish
</span><span> - </span><span style="color:#a3be8c;">image
</span><span> - </span><span style="color:#a3be8c;">deploy
</span><span>
</span><span style="color:#bf616a;">publish</span><span>:
</span><span> </span><span style="color:#bf616a;">image</span><span>: </span><span style="color:#a3be8c;">$CI_REGISTRY/nsteinmetz/hugo:latest
</span><span> </span><span style="color:#bf616a;">artifacts</span><span>:
</span><span> </span><span style="color:#bf616a;">paths</span><span>:
</span><span> - </span><span style="color:#a3be8c;">public
</span><span> </span><span style="color:#bf616a;">expire_in</span><span>: </span><span style="color:#a3be8c;">1 day
</span><span> </span><span style="color:#bf616a;">only</span><span>:
</span><span> - </span><span style="color:#a3be8c;">master
</span><span> - </span><span style="color:#a3be8c;">web
</span><span> </span><span style="color:#bf616a;">script</span><span>:
</span><span> - </span><span style="color:#a3be8c;">hugo
</span><span> </span><span style="color:#bf616a;">stage</span><span>: </span><span style="color:#a3be8c;">publish
</span><span> </span><span style="color:#bf616a;">tags</span><span>:
</span><span> - </span><span style="color:#a3be8c;">hugo
</span><span>
</span><span style="color:#bf616a;">kaniko</span><span>:
</span><span> </span><span style="color:#bf616a;">stage</span><span>: </span><span style="color:#a3be8c;">image
</span><span> </span><span style="color:#bf616a;">image</span><span>:
</span><span> </span><span style="color:#bf616a;">name</span><span>: </span><span style="color:#a3be8c;">gcr.io/kaniko-project/executor:debug
</span><span> </span><span style="color:#bf616a;">entrypoint</span><span>: [""]
</span><span> </span><span style="color:#bf616a;">variables</span><span>:
</span><span> </span><span style="color:#bf616a;">RELEASE_IMAGE</span><span>: </span><span style="color:#a3be8c;">$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA-$CI_PIPELINE_ID-$CI_JOB_ID
</span><span> </span><span style="color:#bf616a;">script</span><span>:
</span><span> - </span><span style="color:#a3be8c;">echo "IMAGE=${RELEASE_IMAGE}" >> docker.env
</span><span> - </span><span style="color:#a3be8c;">mkdir -p /kaniko/.docker
</span><span> - </span><span style="color:#a3be8c;">echo "{\"auths\":{\"$CI_REGISTRY\":{\"username\":\"$CI_REGISTRY_USER\",\"password\":\"$CI_REGISTRY_PASSWORD\"}}}" > /kaniko/.docker/config.json
</span><span> - </span><span style="color:#a3be8c;">/kaniko/executor --context $CI_PROJECT_DIR --dockerfile $CI_PROJECT_DIR/Dockerfile --destination $RELEASE_IMAGE
</span><span> </span><span style="color:#bf616a;">only</span><span>:
</span><span> - </span><span style="color:#a3be8c;">master
</span><span> - </span><span style="color:#a3be8c;">web
</span><span> </span><span style="color:#bf616a;">when</span><span>: </span><span style="color:#a3be8c;">on_success
</span><span> </span><span style="color:#bf616a;">tags</span><span>:
</span><span> - </span><span style="color:#a3be8c;">kaniko
</span><span> </span><span style="color:#bf616a;">artifacts</span><span>:
</span><span> </span><span style="color:#bf616a;">reports</span><span>:
</span><span> </span><span style="color:#bf616a;">dotenv</span><span>: </span><span style="color:#a3be8c;">docker.env
</span><span>
</span><span style="color:#bf616a;">docker</span><span>:
</span><span> </span><span style="color:#bf616a;">stage</span><span>: </span><span style="color:#a3be8c;">deploy
</span><span> </span><span style="color:#bf616a;">before_script</span><span>:
</span><span> - </span><span style="color:#a3be8c;">docker login -u gitlab-ci-token -p $CI_JOB_TOKEN $CI_REGISTRY
</span><span> </span><span style="color:#bf616a;">script</span><span>:
</span><span> - </span><span style="color:#a3be8c;">sed -i -e "s|IMAGE|${IMAGE}|g" docker-compose.yml
</span><span> - </span><span style="color:#a3be8c;">docker context use mon-serveur
</span><span> - </span><span style="color:#a3be8c;">docker-compose pull
</span><span> - </span><span style="color:#a3be8c;">docker-compose up -d
</span><span> </span><span style="color:#bf616a;">needs</span><span>:
</span><span> - </span><span style="color:#bf616a;">job</span><span>: </span><span style="color:#a3be8c;">kaniko
</span><span> </span><span style="color:#bf616a;">artifacts</span><span>: </span><span style="color:#d08770;">true
</span><span> </span><span style="color:#bf616a;">when</span><span>: </span><span style="color:#a3be8c;">on_success
</span><span> </span><span style="color:#bf616a;">only</span><span>:
</span><span> - </span><span style="color:#a3be8c;">master
</span><span> - </span><span style="color:#a3be8c;">web
</span><span> </span><span style="color:#bf616a;">tags</span><span>:
</span><span> - </span><span style="color:#a3be8c;">shell
</span><span> </span><span style="color:#bf616a;">environment</span><span>:
</span><span> </span><span style="color:#bf616a;">name</span><span>: </span><span style="color:#a3be8c;">production
</span><span> </span><span style="color:#bf616a;">url</span><span>: </span><span style="color:#a3be8c;">https://www.ptsm.io/
</span></code></pre>
<p>Et voilà ! 😎</p>
<p>Avec ces contextes (que l'on peut utiliser aussi avec swarm et kubernetes), on a donc un moyen simple et efficace pour déployer des conteneurs à distance et de façon automatisée.</p>