CérénIT - ssh-agentLe blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)Zola2019-04-24T09:30:00+02:00https://cerenit.fr/tags/ssh-agent/atom.xmlWeb, Ops & Data - Avril 20192019-04-24T09:30:00+02:002019-04-24T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-avril-2019/<p>Deux petites annonces pour démarrer cette édition :</p>
<ul>
<li>Je serai à <a rel="noopener" target="_blank" href="https://events.linuxfoundation.org/events/kubecon-cloudnativecon-europe-2019/">KubeCon EU</a> du 20 au 23 Mai à Barcelone. Si vous y allez aussi, dites le moi, ce sera une occasion de se rencontrer.</li>
<li>Le <a rel="noopener" target="_blank" href="http://bigdatahebdo.com/">BigData Hebdo</a> a ouvert son slack - Vous pouvez nous rejoindre par vous même via <a rel="noopener" target="_blank" href="http://bit.ly/invitebdh">ce lien</a></li>
</ul>
<h3 id="apm">APM</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://glowroot.org/">Glowroot</a> : Pour ceux qui s'intéressent au sujet de l'APM et qui ne veulent pas aller chez AppDynamics, Dynatrace ou Elastic, j'ai assisté à une démo intéressante sur Glowroot - il est forcément moins riche que ces concurrents mais il a l'air de faire l'essentiel de ce que l'on peut attendre d'un APM. Il ne marche qu'avec la JVM.</li>
</ul>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.spreaker.com/user/vhe74/episode-71-google-cloud-next-19">Big Data Hebdo - Episode 71 : Google Cloud Next 19</a> : Vincent et Jérome passent en revue les annonces de Google Cloud Next 2019, en plus de nous faire un analyse fine de MS Excel vs Google Sheets ;-) - Personnellement, je retiens surtout <a rel="noopener" target="_blank" href="https://cloud.google.com/blog/topics/hybrid-cloud/new-platform-for-managing-applications-in-todays-multi-cloud-world/">Anthos</a> (le kubernetes distribué multi-cloud et on-premise), <a rel="noopener" target="_blank" href="https://cloud.google.com/blog/products/serverless/announcing-cloud-run-the-newest-member-of-our-serverless-compute-stack">Cloud Run</a> (la capacité à exécuter des conteneurs dans une logique serverless et basé sur <a rel="noopener" target="_blank" href="https://cloud.google.com/knative/">knative</a> - il me fait penser à <a rel="noopener" target="_blank" href="https://www.openfaas.com/">OpenFaaS</a>) et <a rel="noopener" target="_blank" href="https://cloud.google.com/code/">Cloud Code</a> (extension pour l'IDE VSCode et prochainement IntelliJ pour gérer plus facilement des déploiements Kubernetes). Vous retrouvrez les <a rel="noopener" target="_blank" href="https://cloud.google.com/blog/topics/inside-google-cloud/100-plus-announcements-from-google-cloud-next19/">122 annonces sur le blog de Google Cloud</a> et <a rel="noopener" target="_blank" href="https://www.youtube.com/playlist?list=PLIivdWyY5sqIXvUGVrFuZibCUdKVzEoUw">les vidéos sont sur la chaine Youtube associée</a></li>
</ul>
<h3 id="container-et-orchestration">Container et Orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2019/03/25/kubernetes-1-14-release-announcement/">Kubernetes 1.14: Production-level support for Windows Nodes, Kubectl Updates, Persistent Local Volumes GA</a> : les noeuds Windows et les conteneurs Windows sont supportés officiellement, <a rel="noopener" target="_blank" href="https://kubectl.docs.kubernetes.io/">kubectl</a> se voit améliorer et bénéficie d'un nouveau site de documentation et se dote d'une intégration de <a rel="noopener" target="_blank" href="https://github.com/kubernetes-sigs/kustomize">kustomize</a>. Les volumes locaux persistant passent en bêta et plein d'autres choses encore.</li>
<li><a rel="noopener" target="_blank" href="https://kubernetes.io/blog/2019/04/04/kubernetes-1.14-local-persistent-volumes-ga/">Kubernetes 1.14: Local Persistent Volumes GA</a> : les volumes locaux persistants sont intéressants car ils vont permettre de déployer un conteneur sur un même noeud de façon assurée dès lors que ce volume est défini. Cela n'est certes pas très résilient, mais cela peut réponre à un certain nombre de besoins. Les cas d'usages sont très bien décrits dans ce billet et peuvent donner des idées.</li>
<li><a rel="noopener" target="_blank" href="https://blog.containo.us/announcing-general-availability-of-traefik-enterprise-edition-9c9aad363ce">Announcing General Availability of Traefik Enterprise Edition</a> : la version Entreprise de Traefik est disponible officiellement. Elle adresse principalement le cas d'un déploiement haute disponibilité de Traefik avec la mise en place d'un data plane et d'un controle plane pour gérer tout ça.</li>
<li><a rel="noopener" target="_blank" href="https://www.cncf.io/blog/2019/04/08/cncf-to-host-cri-o/">CNCF to Host CRI-O</a> : le runtime de conteneurs développé par Red Hat et Google rejoint la fondation CNCF au stade de l'incubation.</li>
<li><a rel="noopener" target="_blank" href="https://eng.uber.com/introducing-kraken/">Introducing Kraken, an Open Source Peer-to-Peer Docker Registry</a> : Uber vient de mettre à disposition Kraken, une "registry docker" pair à pair. Le nombre d'acteurs intéressés par ce genre de projet doit être assez faible mais sait-on jamais...</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://arp242.net/weblog/json_as_configuration_files-_please_dont">JSON as configuration files: please don’t</a> : Si certains pensaient utiliser JSON pour décrire des fichiers de configurations, l'article rappelle que JSON n'est qu'un format d'échange de données et surtout pas de fichiers de configuration. On peut comprendre la tentation mais on a déjà bien assez à faire avec YAML, INI voire XML. Aucun n'est parfait certes mais pas la peine d'en rajouter.</li>
<li><a rel="noopener" target="_blank" href="https://blog.atomist.com/in-defense-of-yaml/">In Defense of YAML</a> : L'auteur critique l'abus autour de YAML pour l'utiliser pour tout et n'importe quoi. Comme format de données, il est utilisable mais nous voyons des détournements où du yaml devient du pseudo code. L'auteur cite la CI Gitlab ou encore Tekton. On ne peut que lui donner raison. Il serait plus simpe d'avoir un vrai langage de programmation plutôt que de tout "YAMLiser".</li>
</ul>
<h3 id="licences">Licences</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://writing.kemitchell.com/2019/03/09/Deprecation-Notice.html">Deprecation Notice: MIT and BSD</a> (via Les Cast Codeurs) : Intéressant, les licences BSD/MIT serait à considérer comme dépréciée. L'auteur travaille pour le Blue Oak Council qui publie la <a rel="noopener" target="_blank" href="https://blueoakcouncil.org/">licence du même nom</a>. On peut éventuellement lui reprocher un certain biais mais il indique quand même que des licences modernes (comme ASL 2.0) seraient plus judicieuses que de rester sur du MIT/BSD.</li>
</ul>
<h3 id="securite">Sécurité</h3>
<ul>
<li>Les serveurs de Matrix.org ont été compromis - l'équipe a joué la transaprence et <a rel="noopener" target="_blank" href="https://github.com/matrix-org/matrix.org/issues/371">donne les informations laissées par l'attaquant</a> sur les failles existantes et les bonnes pratiques qu'il faut en déduire. C'est l'occasion de revoir notamment les <a rel="noopener" target="_blank" href="https://feeding.cloud.geek.nz/posts/secure-ssh-agent-usage/">options de ssh-agent</a> pour éviter de telles mésaventures.</li>
</ul>
<h3 id="sql">SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://www.miximum.fr/blog/la-recherche-plein-texte-avec-postgresql/">La recherche plein texte avec Postgresql</a> : Présentation des tsvector et tsquery, deux fonctions postgres pour faire de la <a rel="noopener" target="_blank" href="https://www.postgresql.org/docs/current/textsearch.html">recherche plein texte</a>.</li>
</ul>
<h3 id="timeseries">Timeseries</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/migrate-outflux-a-smart-way-out-of-influxdb/">Introducing Outflux: a smart way out of InfluxDB</a> : l'équipe de TimescaleDB, l'extension Postgres qui permet de manipuler des données temporelles, sort son outil de migration des données d'InfluxDB vers TimescaleDB.</li>
</ul>
<h3 id="astuce-du-mois-gestion-de-la-rotation-des-logs-d-un-container-docker">Astuce du mois : gestion de la rotation des logs d'un container docker</h3>
<p>Dans les bonnes pratiques Docker, il est dit d'utliser stdout/stderr pour avoir les logs de votre conteneur via docker logs. Toutefois, cette pratique va alimenter un fichier de log <code>/var/lib/docker/containers/<container id>/<conteiner id>-json.log</code>. Ce fichier peut donc saturer votre disque et aller jusqu'à corrompre vos conteneurs. L'autre bonne pratique étant que tout fichier de log doit avoir une politique de rotation du fichier associée pour éviter toute saturation de disque ou d'avoir des trop gros fichiers de logs.</p>
<p>Docker permet de <a rel="noopener" target="_blank" href="https://docs.docker.com/config/containers/logging/configure/">configurer le driver de logs</a> au niveau du démon (via <code>/etc/docker/daemon.json</code>), en argument lors d'un <code>docker run</code> ou dans <code>docker-compose.yml</code>.</p>
<p>Si l'on reste sur le <a rel="noopener" target="_blank" href="https://docs.docker.com/config/containers/logging/json-file/">driver json-file</a> et que l'on veut piloter la rotation des logs au niveau de <code>docker-compose.yml</code>, cela donne par ex (version simplifiée) :</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</span><span>'
</span><span style="color:#bf616a;">services</span><span>:
</span><span> </span><span style="color:#bf616a;">service_xxx</span><span>:
</span><span> </span><span style="color:#bf616a;">image</span><span>: </span><span style="color:#a3be8c;">docker_image_xxx
</span><span> [</span><span style="color:#d08770;">...</span><span>]
</span><span> </span><span style="color:#bf616a;">logging</span><span>:
</span><span> </span><span style="color:#bf616a;">driver</span><span>: "</span><span style="color:#a3be8c;">json-file</span><span>"
</span><span> </span><span style="color:#bf616a;">options</span><span>:
</span><span> </span><span style="color:#bf616a;">max-size</span><span>: "</span><span style="color:#a3be8c;">10m</span><span>"
</span><span> </span><span style="color:#bf616a;">max-file</span><span>: "</span><span style="color:#a3be8c;">10</span><span>"
</span></code></pre>
<p>Vous pouvez alors définir une stratégie de rotation des logs par container si vous le souhaitez. Ainsi, vous gérer la taille maximale de logs qui vont être générés et êtes ainsi assurés de ne pas avoir de mauvaises surprises à ce niveau là.</p>