CérénIT - operatorLe blog tech de Nicolas Steinmetz (Time Series, IoT, Web, Ops, Data)Zola2020-06-24T09:30:00+02:00https://cerenit.fr/tags/operator/atom.xmlWeb, Ops & Data - Juin 20202020-06-24T09:30:00+02:002020-06-24T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-juin-2020/<p>Je ne peux résister à mentionner la sortie de <a rel="noopener" target="_blank" href="https://bigdatahebdo.com/podcast/episode-100-anniversaire-avec-la-communaute/">l'épisode 100 du BigDataHebdo</a>, podcast où j'ai le plaisir de contribuer. Pour ce numéro spécial (épisode 100 et 6 ans du podcast), nous avons fait appel aux membres de la communauté pour partager avec nous leur base de données favorite, la technologie qui les a le plus impressionée durant ces 6 dernières années et celle qu'ils voient comme majeure pour les 6 prochaines années. Allez l'écouter !</p>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/announcing-the-terraform-visual-studio-code-extension-v2-0-0/">Announcing the Terraform Visual Studio Code Extension v2.0.0</a> : Hashicorp prend en main le support de l'extension Terraform pour VSCode, en sort une nouvelle version et apporte différentes améliorations comme un meilleur support de Terraform 0.12 et l'utilisation du Terraform Language Server.</li>
</ul>
<h3 id="container-et-orchestration">Container et orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://thenewstack.io/introducing-the-telegraf-operator-kubernetes-sidecars-made-simple/">Introducing the Telegraf Operator: Kubernetes Sidecars Made Simple</a> : Présentation de l'operator kubernetes pour telegraf qui permet de déployer un agent telegraf sous la forme d'un sidecar dans un pod et de récupérer les métriques associés.</li>
<li><a rel="noopener" target="_blank" href="https://twitter.com/Sebastien_Jard1/status/1270641379979362304">Kubernetes 1.18.x officiellement disponible chez OVHCloud</a></li>
<li><a rel="noopener" target="_blank" href="https://rancher.com/blog/2020/longhorn-container-storage">Longhorn Simplifies Distributed Block Storage in Kubernetes</a> : Rancher vient de sortir la version 1.0 de <a rel="noopener" target="_blank" href="https://rancher.com/products/longhorn">Longhorn</a>. C'est une solution de stockage pour Kubernetes que l'on peut utiliser avec ou sans Rancher. Il faut la voir comme une solution de stockage légère et simple à mettre en oeuvre. Un système de réplication permet d'éviter les pertes de données et d'amélioer la durabilité des données. Des fonctionnalités de backup/restore existent également. Elle semble plus simple à mettre en oeuvre que Rook/Ceph par ex mais sera moins complète que ce dernier.</li>
<li><a rel="noopener" target="_blank" href="https://dev.to/aurelievache/kubernetes-sketchnotes-pods-4ib0">Understanding Kubernetes</a> & <a rel="noopener" target="_blank" href="https://dev.to/aurelievache/understanding-istio-part-1-istio-components-4ik5">Understanding Istio</a> : Aurélie Vache réalise des sketchnotes pour vulgariser Kubernetes et Istio. Un joli travail de vulgarisation.</li>
</ul>
<h3 id="iot">IoT</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.raspberrypi.org/blog/8gb-raspberry-pi-4-on-sale-now-at-75/">8GB Raspberry Pi 4 on sale now at $75</a> : Le Raspberry Pi 4 arrive en version 8Go de RAM, Raspberry PI OS arrive en 64 bits, le support du boot sur usb arrive aussi (adieu la SDCard) et plein d'autres choses. Le tout au prix de 75$.</li>
</ul>
<h3 id="ops">Ops</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://medium.com/@IG1.com/sismology-iguana-solutions-monitoring-system-f46e4170447f">Sismology: Iguana Solutions’ Monitoring System</a> : retour d'expérience sur une plateforme de monitoring initiée sur Prometheus et qui évolue vers VictoriaMetrics en prenant les aspects de stockage à long terme, le multi-tenant et la haute disponibilité de la plateforme.</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-2-0-0-beta-12/">Release Announcement: InfluxDB 2.0.0 Beta 12</a> : une beta de plus avec l'ajout notamment d'<code>influx stacks</code> pour faire du CRUD sur des groupes de ressources InfluxDB (dashboard, labels, tasks, etc).</li>
<li><a rel="noopener" target="_blank" href="https://twitter.com/warp10io/status/1268865147671646209">Warp 10, The Most Advanced Time Series Platform, now provides multi-architecture docker images.</a> : vous pouvez donc déployer des <a rel="noopener" target="_blank" href="https://hub.docker.com/r/warp10io/warp10">images docker warp10</a> sur des plateformes amd64/armv7/arm64.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/may-2020-warp-10-release-2-6-0/">May 2020: Warp 10 release 2.6.0</a> : Pleins d'améliorations et de correctifs et notamment la capacité de dialoguer directement avec Warp10 via le protocole Protobuf ou via Arrow.</li>
<li><a rel="noopener" target="_blank" href="https://blog.senx.io/time-series-forecasts-in-warpscript/">Time series forecasts in WarpScript</a> : Présentation de l'extension Warpscript permettant d'appliquer des algorithmes de prévisions (ARIMA, SARIMA, HOLTWINTERS, etc) sur des séries temporelles. Précision: il s'agit d'une extension propriétaire mais vous pouvez l'évaluer sur la <a rel="noopener" target="_blank" href="https://sandbox.senx.io/">sandbox Warp10</a> mise à disposition par <a rel="noopener" target="_blank" href="https://senx.io/">SenX</a>.</li>
</ul>
Web, Ops & Data - Mai 20202020-05-27T09:30:00+02:002020-05-27T09:30:00+02:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-mai-2020/<p>Le mois prochain, dans le cadre d'<a rel="noopener" target="_blank" href="https://www.influxdays.com/london-2020/">InfluxDays London</a>, j'aurai le plaisir de présenter un talk sur le passage d'un monitoring Bare Metal vers un monitoring dans un monde Kubernetes avec Telegraf et InfluxDB.</p>
<h3 id="cloud">Cloud</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://github.com/hashicorp/terraform/issues/25016">Terraform v0.13.0 beta program</a> : Terraform 0.13 (beta) devrait supporter au niveau des modules <code>depends_on</code>, <code>count</code> et <code>for_each</code>. Cela devrait éviter des dépendances parfois cryptiques.</li>
<li><a rel="noopener" target="_blank" href="https://www.hashicorp.com/blog/deploy-any-resource-with-the-new-kubernetes-provider-for-hashicorp-terraform/">Deploy Any Resource With The New Kubernetes Provider for HashiCorp Terraform</a> : la prochaine version du provider kubernetes de terraform permettra de déployer n'importe quelle ressource. Pratique ! Il vous faudra un cluster kubernetes 1.17+ pour utliser la fonctionnalité "Server Side Apply".</li>
<li><a rel="noopener" target="_blank" href="https://www.grottedubarbu.fr/ovh-api-openstack/">OVH : Utilisation de l'API OpenStack</a> : Tutoriel pour le déploiement d'un wordpress sur un cluser k3s chez OVH en utilisant l'API OpenStack ; le reste du blog <a rel="noopener" target="_blank" href="https://www.grottedubarbu.fr/">La Grotte du Barbu</a> fournit plein de ressources sur kubernetes, traefik, docker, etc.</li>
</ul>
<h3 id="container-orchestration">Container & orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.linuxuprising.com/2019/11/how-to-install-and-use-docker-on-fedora.html">How To Install Docker On Fedora 32 Or 31 (And Alternatives)</a> : Même si l'utilisation de podman est recommandée en lieu et place de docke-ce depuis Fedora 31, il peut être nécessaire de vouloir utiliser docker-ce sous Fedora. Avec Fedora 32, il faut en plus des cgroups v1 à activer, il y a une règle firewall à ajouter pour que vos conteneurs aient accès au réseau / à internet.</li>
<li><a rel="noopener" target="_blank" href="https://goharbor.io/blog/harbor-2.0/">Harbor 2.0</a> : Version 2.0 de la registry Harbor qui permet d'héberger aussi des charts Helm. Pour la partie scan de vulnérabilités, le produit Clair de Quay a été remplacé par <a rel="noopener" target="_blank" href="https://github.com/aquasecurity/trivy">Aqua Trivy</a></li>
<li><a rel="noopener" target="_blank" href="https://containo.us/blog/announcing-maesh-1-2/">Announcing Maesh 1.2</a> : la solution de Service Mesh de Containous basée sur Traefik sort en 1.2 ; elle se base sur Traefik 2.2 et apporte donc le support de l'UDP au niveau reverse proxy. Cette version permet aussi des améliorations au niveau ACL, gestion de la configuration et gestion des middlewares par service.</li>
<li><a rel="noopener" target="_blank" href="https://www.percona.com/blog/2020/05/07/introduction-to-percona-kubernetes-operator-for-percona-xtradb-cluster/">Introduction to Percona Kubernetes Operator for Percona XtraDB Cluster</a></li>
<li><a rel="noopener" target="_blank" href="https://blog.jetstack.io/blog/cert-manager-0.15-and-beyond/">Cert-manager v0.15 and beyond</a></li>
<li><a rel="noopener" target="_blank" href="https://cdk8s.io/">CDK for Kubernetes</a> : AWS vient de sortir un "Cloud Development Kit" permettant de manipuler et déployer des ressources kubernetes en python, typescript ou javascript.</li>
</ul>
<h3 id="devops">DevOps</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://devops.training.barpilot.io/">DevOps : Discovering, Learning and Sharing</a> (<a rel="noopener" target="_blank" href="https://github.com/guilhem/devops-training">code source</a>) : Guilhem vient de publier sa formation de culture DevOps ; à consulter !</li>
<li><a rel="noopener" target="_blank" href="https://shows.acast.com/radio-devops">Radio DevOps</a> : un podcast qui s'améliore d'épisode en épisode et plutôt adressé à des débutants dans le monde du DevOps.</li>
</ul>
<h2 id="iot">IoT</h2>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.raspberrypi.org/forums/viewtopic.php?f=63&t=274595">Raspberry Pi 4 USB mass storage beta (beta means it not ready yet, and not officially released!)</a> : Le Raspberry Pi 4 va pouvoir démarrer sur un périphérique USB (clé USB, disque SSD, etc) avec l'arrivée du prochain firmware. La nécessité de la SDCard va disparaitre.</li>
</ul>
<h3 id="time-series">Time Series</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.timescale.com/blog/multi-node-petabyte-scale-time-series-database-postgresql-free-tsdb/">A multi-node, elastic, petabyte scale, time-series database on Postgres for free (and more ways we are investing in our community)</a> : Timescale annonce que sa version cluster de TimescaleDB sera gratuite (sous licence Timescale, source code available mais pas le droit de faire un produit SaaS avec). La version monoserveur reste sous licence Apache 2.</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/blog/2020/05/18/grafana-v7.0-released-new-plugin-architecture-visualizations-transformations-native-trace-support-and-more/">Grafana v7.0 released: New plugin architecture, visualizations, transformations, native trace support, and more</a> : A l'occasion de la <a rel="noopener" target="_blank" href="https://grafana.com/about/events/grafanacon/2020/#schedule">GrafanaCon 2020</a>, Grafana Labs a sorti notamment Grafana 7.0 avec des tonnes d'amélioration. Il va falloir un peu de temps pour bien apprécier tout cela.</li>
<li><a rel="noopener" target="_blank" href="https://grafana.com/about/events/grafanacon/2020/#schedule">GrafanaCon 2020</a> : la conférence annuelle de Grafana s'est tenue tout le mois de Mai, les vidéos sont accessibles sur la page de chaque talk après avoir saisi son email. Je n'ai malheureusement pas encore eu le temps de les visionner. <a rel="noopener" target="_blank" href="https://grafana.com/blog/2020/05/21/cortex-v1.1-released-with-improved-reliability-and-performance/">Cortex 1.1</a> et <a rel="noopener" target="_blank" href="https://grafana.com/blog/2020/05/20/loki-v1.5.0-released-with-no-more-dependency-on-a-separate-index-store">Loki 1.5</a> y ont notamment été annoncés.</li>
</ul>
Revue rapide des operators et alternatives pour déployer du Postgresql sur Kubernetes2020-01-30T16:30:00+01:002020-01-30T16:30:00+01:00
Unknown
https://cerenit.fr/blog/revue-rapide-des-operateurs-et-alternatives-postgresql-kubernetes/<p>Dans le cadre du déploiement d'applications stateful sur un cluster kubernetes, je me suis posé la question des solutions me permettant de déployer une instance PostgreSQL. Ce comparatif est succint et comporte surement un certain nombre d'approximations. C'est le résultat de quelques heures de veille et de tests sur le sujet (jusqu'à plusieurs semaines pour KubeDB).</p>
<h3 id="chart-helm-postgresql">Chart helm PostgreSQL</h3>
<table><thead><tr><th></th><th></th></tr></thead><tbody>
<tr><td>URL</td><td>https://github.com/helm/charts/tree/master/stable/postgresql</td></tr>
<tr><td>Mainteneur</td><td>Bitnami</td></tr>
<tr><td>Version actuelle</td><td>8.2.1</td></tr>
<tr><td>Version testée</td><td>7.6 & 8.2.1</td></tr>
<tr><td>Version PG disponible</td><td>9.6, 10.11, 11.6, 12.1</td></tr>
<tr><td>Version PG testée</td><td>11.6</td></tr>
<tr><td>Replication</td><td>O</td></tr>
<tr><td>Failover</td><td>N</td></tr>
<tr><td>Backup</td><td>N</td></tr>
<tr><td>Gestion Upgrade PG</td><td>O</td></tr>
<tr><td>Metrics</td><td>Prometheus</td></tr>
</tbody></table>
<p>Le chart est basé sur <a rel="noopener" target="_blank" href="https://github.com/helm/charts/tree/master/stable/postgresql#differences-between-bitnami-postgresql-image-and-docker-official-image">des images custom Bitnami plutôt que sur les images officielles Postgresql</a>. Il reste toutefois possible d'utiliser les images officielles. Ce choix d'image custom se justifie par la fonctionnalité de réplication et d'avoir des images non root. Il faudra partir sur une version Debian (10.0 pour la version 8+ du chart), CentOS 7.0 ou Oracle Linux 7.</p>
<p>Le chart offre d'autres fonctionnalités (authentification ldap, personnalisation de pg_hba.conf, etc) et s'avère assez riche. Il peut donc a priori gérer des cas basiques à plus avancés.</p>
<p>Il existe un chart pour avoir une version <a rel="noopener" target="_blank" href="https://github.com/bitnami/charts/tree/master/bitnami/postgresql-ha">Postgresql High Availability</a> (non testé).</p>
<h3 id="stolon">Stolon</h3>
<table><thead><tr><th></th><th></th></tr></thead><tbody>
<tr><td>URL</td><td>https://github.com/sorintlab/stolon</td></tr>
<tr><td>Mainteneur</td><td>Sorint OSS</td></tr>
<tr><td>Version actuelle</td><td>0.15.0</td></tr>
<tr><td>Version testée</td><td>-</td></tr>
<tr><td>Version PG disponible</td><td>9.4+, 10, 11, 12</td></tr>
<tr><td>Version PG testée</td><td>-</td></tr>
<tr><td>Replication</td><td>O</td></tr>
<tr><td>Failover</td><td>O</td></tr>
<tr><td>Backup</td><td>N</td></tr>
<tr><td>Gestion Upgrade PG</td><td>?</td></tr>
<tr><td>Metrics</td><td>?</td></tr>
</tbody></table>
<p>La solution s'appuie par défaut sur les images officielles Postgresql mais il est possible d'utiliser ses propres images. Si la solution semble intéressante, je l'ai trouvé complexe, même si cela se justifie. Le fait d'avoir de multiples composants (keeper pour les instances Postgresql, des proxy pour la gestion de la connexion à la base de données et enfin des sentinels qui surveillent le tout) m'a un peu rebuté, tout comme le fait d'avoir un binaire de plus à utiliser. La documentation est assez rudimentaire également pour bien apprécier le produit.</p>
<h3 id="kubedb">KubeDB</h3>
<table><thead><tr><th></th><th></th></tr></thead><tbody>
<tr><td>URL</td><td>https://kubedb.com/</td></tr>
<tr><td>Mainteneur</td><td>AppsCode</td></tr>
<tr><td>Version actuelle</td><td>0.13.0-rc0</td></tr>
<tr><td>Version testée</td><td>0.13.0-rc0</td></tr>
<tr><td>Version PG disponible</td><td>9.5/9.6, 10.2/10.6, 11.1</td></tr>
<tr><td>Version PG testée</td><td>11.1</td></tr>
<tr><td>Replication</td><td>O</td></tr>
<tr><td>Failover</td><td>?</td></tr>
<tr><td>Backup</td><td>O</td></tr>
<tr><td>Gestion Upgrade PG</td><td>?</td></tr>
<tr><td>Metrics</td><td>Prometheus</td></tr>
</tbody></table>
<p>Le produit est prometteur mais manque encore de stabilité : il se base sur un operateur, il est édité par une société assez implémentée dans l'écosystème kubernetes et il permet de gérer plusieurs bases de données, dont Postgresql.</p>
<p>L'initialisation est assez simple et le produit semble bien pensé et offre l'ensemble des fonctionnalités que l'on peut attendre d'un operator pour gérer une base Postgresql (initialisation, réplication, sauvegarde, monitoring, etc)</p>
<p>Pour les backups, le produit s'appuie sur <a rel="noopener" target="_blank" href="https://stash.run/">stash</a> pour faire des backups dans des espace de stockages distants (S3, Swift, etc). Pour Restic et Swift, il faut un conteneur de type object storage 'normal'. En voulant utiliser le stockage Cloud Archive d'OVH, l'intégration ne fonctionnait pas bien.</p>
<p>Je ne l'ai pas retenu notant des restart des pods à répétition en lisaison avec le mécanisme d'élection de leaders qui n'aboutissait pas. J'espère que les prochaines versions vont me permettre de tester à nouveau le produit.</p>
<h3 id="crunchy">Crunchy</h3>
<table><thead><tr><th></th><th></th></tr></thead><tbody>
<tr><td>URL</td><td>https://access.crunchydata.com/documentation/postgres-operator/4.1.0/</td></tr>
<tr><td>Mainteneur</td><td>CruncyData</td></tr>
<tr><td>Version actuelle</td><td>4.1</td></tr>
<tr><td>Version testée</td><td>-</td></tr>
<tr><td>Version PG disponible</td><td>9.5/9.6, 10.10, 11.5</td></tr>
<tr><td>Version PG testée</td><td>-</td></tr>
<tr><td>Replication</td><td>O</td></tr>
<tr><td>Failover</td><td>O</td></tr>
<tr><td>Backup</td><td>O</td></tr>
<tr><td>Gestion Upgrade PG</td><td>?</td></tr>
<tr><td>Metrics</td><td>Prometheus</td></tr>
</tbody></table>
<p>Déjà, voir que l'installation se fait via Ansible ou via des commandes bash et qu'il faut un binaire spécifique pour interagir avec la plateforme, je coince un peu. La solution semble aussi très riche mais complexe à prendre en main. Venant de KubeDB, j'avoue avoir passé rapidement mon chemin.</p>
<h3 id="zalando-postgres-operator">Zalando Postgres Operator</h3>
<table><thead><tr><th></th><th></th></tr></thead><tbody>
<tr><td>URL</td><td>https://github.com/zalando/postgres-operator</td></tr>
<tr><td>Mainteneur</td><td>Zalando</td></tr>
<tr><td>Version actuelle</td><td>1.3.1</td></tr>
<tr><td>Version testée</td><td>-</td></tr>
<tr><td>Version PG disponible</td><td>9.6, 10, 11</td></tr>
<tr><td>Version PG testée</td><td>-</td></tr>
<tr><td>Replication</td><td>O</td></tr>
<tr><td>Failover</td><td>?</td></tr>
<tr><td>Backup</td><td>O</td></tr>
<tr><td>Gestion Upgrade PG</td><td>?</td></tr>
<tr><td>Metrics</td><td>Prometheus</td></tr>
</tbody></table>
<p>Zalando a rendu public son operator kubernetes. Il s'appuie sur leur solution <a rel="noopener" target="_blank" href="https://github.com/zalando/patroni">patroni</a> pour créer un cluster haute disponibilité. Sortant de mon test KubeDB, j'ai trouvé leur modèle trop complexe et avec des fonctionnalités dont on a a priori pas besoin (les Teams ?). J'ai du coup moins l'impression de manipuler une base de données Postgres classique.</p>
<h1 id="edb-postgres-on-kubernetes">EDB Postgres on Kubernetes</h1>
<p>EntrepriseDB, un acteur majeur de l'écosystème Postgres, a publié en septembre dernier son operator : <a rel="noopener" target="_blank" href="https://www.enterprisedb.com/enterprise-postgres/edb-postgres-kubernetes">EDB Postgres on Kubernetes</a>. Il ne semble pas open source et l'accès aux conteneurs demande une authentification. Je ne suis donc pas allé plus loin.</p>
<h1 id="conclusion">Conclusion</h1>
<p>Alors que mes besoins sont très simples (hébergement d'instances NextCloud pour quelques utilisateurs à chaque fois) et que j'utilisais pour le moment des instances Postgresql sur un seul serveur dans des conteneurs Docker (avec la gestion des backups via un container dédié), j'avoue être resté un peu sur ma fin. J'avais fondé beaucoup d'espoirs sur KubeDB mais qui tardent à se réaliser. En attendant, je suis repassé sur le chart helm qui fonctionne bien. Il faut juste prévoir un job annexe pour les backups.</p>
<p>Certains pourront me dire qu'il est encore trop tôt pour faire du statefull sur kubernetes ou bien qu'il faut utiliser des base de données "cloud native". Pour le premier point, c'est aussi avec ces petits instances non critiques que l'on peut se faire la main sur le sujet et après tout, je fais ça depuis des années avec des containers Docker sans soucis. Pour le second point, faut-il encore que ces bases existent et que les outils associés les utilisent...</p>
Web, Ops & Data - Février 20192019-02-27T09:30:00+01:002019-02-27T09:30:00+01:00
Unknown
https://cerenit.fr/blog/web-ops-and-data-fevrier-2019/<h3 id="container-et-orchestration">Container et orchestration</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://blog.containo.us/the-journey-to-traefik-enterprise-edition-product-evaluation-4828508cbc8">The Journey to Traefik Enterprise Edition: Product Evaluation</a></li>
<li><a rel="noopener" target="_blank" href="https://blog.docker.com/2019/02/docker-security-update-cve-2018-5736-and-container-security-best-practices/">Docker Security Update: CVE-2019-5736 and Container Security Best Practices</a> : Vous avez sans doute tous entendus parlé de la faille de runc, sous le doux nom de <a rel="noopener" target="_blank" href="https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-5736">CVE-2019-5736</a>. Le billet indique qu'il faut utiliser une version 18.06.2+ pour Docker CE et rappelle quelques bonnes pratiques de gestion de containers. Il n'y a pas que les serveurs à mettre à jour, il y a aussi les postes de développeurs, tout aussi exposés.</li>
<li><a rel="noopener" target="_blank" href="https://github.com/rancher/runc-cve">rancher/runc-cve</a> : Pour les gens qui ne peuvent pas mettre à jour le binaire docker, l'équipe de Rancher met à disposition des versions du binaire runc pour les versions depuis docker 1.12.6 jusqu'à 18.06.1</li>
<li><a rel="noopener" target="_blank" href="https://net-security.fr/security/cve-2019-5736-dans-runc/">CVE 2019-5736 dans runC</a> : l'article indique une façon d'exploiter la faille de RunC.</li>
<li><a rel="noopener" target="_blank" href="https://www.ansible.com/blog/ansible-operator">Ansible Operator: What is it? Why it Matters? What can you do with it?</a> : Ansible ne fournit pas un "oprator" en tant que tel pour Kubernetes mais de quoi permettre de créer un operator en se basant sur des playbooks/roles ansible. Ainsi, si votre ressource change d'état par exemple, alors le playbook associé est joué. Idem pour la gestion d'un upgrade, etc. Cela s'inscrit dans la logique de pouvoir développer ses propres Operator sans avoir à les écrire en Go.</li>
<li><a rel="noopener" target="_blank" href="https://medium.com/@ahmetb/mastering-kubeconfig-4e447aa32c75">Mastering the KUBECONFIG file</a> : différentes astuces autour de la gestion du fichier KUBECONFIG.</li>
<li><a rel="noopener" target="_blank" href="https://kubedb.com">KubeDB</a> : KubeDB est un operator kubernetes qui vise à pouvoir déployer et gérer différentes bases sur un cluster kubernetes. Les bases supportées sont MySQL, Postgres, Elasticsearch, Redis, MongoDB et Memcached. Le niveau de fonctionnalités dépend beaucoup de la base de données retenus (la réplication semble être gérée pour Postgres mais pas pour MySQL par ex). La version <a rel="noopener" target="_blank" href="https://github.com/kubedb/cli/releases/tag/0.10.0">0.10</a> vient de sortir, apportant le support du cluster Redis</li>
<li><a rel="noopener" target="_blank" href="https://www.ovh.com/fr/kubernetes/">Managed Kubernetes Service</a> : OVH vient de lancer son offre kubernetes managé et pour l'utiliser depuis deux mois maintenant, elle fonctionne plutôt bien.</li>
</ul>
<h3 id="dns">DNS</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.bortzmeyer.org/attaques-noms-domaine-explications.html">Attaques récentes contre les noms de domaine, que se passe-t-il ?</a> et <a rel="noopener" target="_blank" href="https://www.bortzmeyer.org/dnspionage.html">Détails techniques sur les récentes attaques contre les noms de domaine</a> : deux articles autour de l'actualité autour des attaques DNS évoquée ces derniers jours. Cela permet de distinguer le vrai du faux et de mieux comprendre le fonctionnement de ces attaques dans la chaine DNS.</li>
</ul>
<h3 id="no-sql">(No)SQL</h3>
<ul>
<li><a rel="noopener" target="_blank" href="http://www.loxodata.com/post/exclusion-constraint/">Contrainte d'exclusion</a> : nous connaissons tous les contraintes d'unicité mais parfois cela ne suffit pas. L'exmple montre comment mettre en place une contrainte d'exclusion sur la base de filtre de plage de réseaux : 192.168.122.0/28 est compris dans 192.168.122.0/24, donc si le 2nd est entré dans la base, le 1er ne pourra jamais être ajouté car il y a recouvrement. On retrouve un autre exemple de cette contrainte d'exclusion sur des dates dans l'astuce de la semaine de <a rel="noopener" target="_blank" href="https://postgresweekly.com/issues/289">l'édition 289 de Posrgres Weekly</a>.</li>
<li><a rel="noopener" target="_blank" href="https://www.digitalocean.com/community/tutorials/understanding-database-sharding">Understanding Database Sharding</a> : un billet très explicite sur le partitionnement (sharding) de base de données, pourquoi et comment le faire. Il rappelle aussi les inconvénients à le faire et ce qu'il vaut mieux faire avant d'en arriver au sharding.</li>
<li><a rel="noopener" target="_blank" href="https://softwareengineeringdaily.com/2019/01/24/tidb-distributed-newsql-with-kevin-xu/">TiDB: Distributed NewSQL with Kevin Xu</a> : TIDB est une base qui se déploie sur Kubernetes et qui s'appuie sur RocksDB. Elle se veut "NewSQL" dans le sens où elle veut supporter à la fois des transactions et de l'analytique. Elle veut offrir notamment un support de MySQL mais dans les faits, <a rel="noopener" target="_blank" href="https://www.pingcap.com/docs/sql/mysql-compatibility/">le support reste encore limité</a>. Pour ceux qui veulemnt déployer du MySQL sur Kubernetes avec du sharding, il vaut mieux aller voir du coté de <a rel="noopener" target="_blank" href="https://vitess.io/">Vitess</a></li>
<li><a rel="noopener" target="_blank" href="https://pythonspeed.com/articles/faster-db-tests/">Farewell to fsync(): 10× faster database tests with Docker</a> : alors que l'actualité était plutôt sur le fait que <a rel="noopener" target="_blank" href="https://www.percona.com/blog/2019/02/22/postgresql-fsync-failure-fixed-minor-versions-released-feb-14-2019/">Postgres gérait mieux les erreurs lors d'un <code>fsync()</code></a>, l'astuce consiste ici à désactiver <code>fsync()</code> et/ou à mettre le dossier des données de votre base en RAM pour accélérer les temps de déroiulement de tests. Testé chez un client, c'est un gain d'au moins 20s qui a été constaté sur une opération de quelques minutes (< 5).</li>
</ul>
<h3 id="timeseries">Timeseries</h3>
<ul>
<li><a rel="noopener" target="_blank" href="https://www.dataquest.io/blog/tutorial-time-series-analysis-pandas/">Tutorial: Time Series Analysis with Pandas</a> : un tutoriel assez progressif et didactique sur la manipulation de données temporelles avec Pandas.</li>
<li><a rel="noopener" target="_blank" href="https://www.ovh.com/fr/blog/tsl-a-developer-friendly-time-series-query-language-for-all-our-metrics/">TSL: a developer-friendly Time Series query language for all our metrics</a> : L'équipe d'OVH Metrics a crée son propre langage de requêtage orienté séries temporelles pour Prometheus et Warp10. Le billet raconte leur épopée dans le monde des base de données temporelles et comment ils en sont arrivés à créer TSL. On retrouve une syntaxe fonctionnelle et qui se retrouve assez proche de celle de <a rel="noopener" target="_blank" href="https://www.influxdata.com/blog/flux-windowing-and-aggregation/">Flux</a>, qui lui supporte InfluxDB et Prometheus.</li>
</ul>