PROJET AUTOBLOG


Blog de dada

Site original : Blog de dada

⇐ retour index

Du rachat de Nginx

mardi 12 mars 2019 à 11:46


C'est la grande nouvelle du moment : F5 Networks, société spécialisée dans l'équipement réseau, rachète Nginx. Cette annonce dégouline dans les réseaux sociaux et les premières craintes apparaissent.

Les protagonistes

F5 Networks m'était complètement inconnue. Jamais avant cette annonce je n'avais entendu parler de cette société. Pourtant, il semblerait qu'elle ait les moyens de poser presque un demi milliard d'euros pour acheter une entreprise concurrente. Concurrente ? Oui, puisqu'il semblerait que F5 ait pour spécialité les répartiteurs de charge, ce qu'est le boulot originel de Nginx.

Les précédents

Les débats démarrés dans Mastodon font remonter à la surface des souvenirs douloureux : lorsqu'une entreprise met la main sur un logiciel libre, les choses évoluent souvent de la même façon :

- OpenOffice, porté par Sun Microsystems, a été forké quelques de temps après le rachat de Sun par Oracle. Nous utilisons tous LibreOffice maintenant.
- ZFS, avec encore Sun et Oracle dans la partie, est devenu OpenZFS.
- MySQL, toujours avec les mêmes protagonistes, est maintenant complètement supplanté par MariaDB.
- OwnCloud est devenu Nextcloud quand l'entreprise derrière le projet s'est mise à mal gérer les contributions de sa communauté.

N'hésitez pas à aller voir la liste des forks connus. C'est impressionnant.

La licence

Nginx est sous licence BSD et F5 propose des services de répartiteur de charge (loadbal', en bon langage technique) : il n'est donc pas déconnant d'imaginer que F5 va vouloir mettre en avant ses propres solutions en y intégrant les atouts de Nginx. Tout ceci en n'étant pas le moins du monde obligé de redistribuer les améliorations qu'ils ne manqueront pas d'apporter à leur nouveau jouet hors de prix.

De fait, la licence BSD nous certifie que la dernière version de Nginx nous restera en l'état : accessible, modifiable, etc. C'est du libre (sans l'éthique). Cependant, rien n’oblige F5 à reverser les améliorations futures à la communauté. C'est la magie des licences maladroitement appelées Open Source face aux licences dites Libres.

La place de Nginx

Je me souviens avoir très (trop ?) souvent trollé Nginx quand il est arrivé dans le monde de l'hébergement. Je savais bien que c'était un excellent proxy mais je n'arrivais pas du tout à l'imaginer en tant que serveur web. J'étais clairement du côté d'Apache.
Avec le temps, les choses ont beaucoup évolué et je suis loin d'être le seul à avoir foutu du Nginx absolument partout, en loadbal, proxy et serveur. Mon infrastructure ne contient quasiment plus d'Apache. Là où il est encore présent est justifié par la flemme de le virer et de réécrire des configurations pour des gains en performance minimes.

Bref, Nginx est absolument partout, même si Apache revient dans la partie avec des performances de plus en plus proches, dans certains cas.

La suite ?

Comme dirait l'autre, bien malin est celui capable de faire des prévisions, surtout quand celles-ci concernent le futur. Pourtant, le monde libriste regorge d'exemples pouvant indiquer la direction possible que va prendre Nginx : le fork.
Tout dépendra de la réputation de F5 Networks, des choix qui vont être fait et de l'humeur des membres de la communauté Nginx. La suite de l'aventure va être passionnante à suivre et, là je peux le parier, la communauté s'en sortira par le haut, avec ou sans F5 Networks.


Crontab ? Non, Cronjob !

vendredi 15 février 2019 à 08:42


On sait tous, pour peu que notre métier consiste à passer trop d'heure devant des écrans branchés en SSH à des serveurs, qu'une action répétitive doit être gérée par la Crontab. C'est normal.
Kubernetes s'est amusé à reprendre ce principe pour y glisser du Docker, parce que voilà. Pas vraiment étonnant. Regardons ensemble ce qu'est un CronJob, l'équivalent Crontab de l'orchestrateur.

CronJob

L'idée du CronJob, c'est d'aller effectuer le travail de la Crontab alors qu'il n'est pas possible de savoir combien de conteneurs font tourner notre application. Eh oui, avec un seul conteneur, il est possible de prendre un peu de temps pour lui glisser le paquet qui va bien et ajouter la ligne de configuration qui fait le boulot, mais avec Kubernetes, c'est une autre affaire. Imaginez que vous fassiez ça avec plusieurs conteneurs : vous avez beau vous amuser à calculer le temps d'exécution du processus et ainsi décaler son lancement à la louche, vous allez vite vous retrouver avec des nœuds qui load et des données corrompues. Bref.

Matomo et son CronJob

En exemple, voici ce que je fais avec mon Matomo. Rappel rapide: Matomo est un outil d'analyse de fréquentation d'un site web bien plus propre que ses concurrents et qui, pour un logiciel libre, ne néglige pas les beaux graphiques.

La configuration

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: matomo-archive
spec:
  schedule: "*/30 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: matomo-cron
            image: matomo:3.7
            volumeMounts:
            - name: pv-matomo
              mountPath: /var/www/html
            args:
            - /bin/bash
            - -c
            - /usr/local/bin/php /var/www/html/console core:archive --url=https://url.de.mon.matomo/
          restartPolicy: OnFailure
          volumes:
          - name: pv-matomo
            flexVolume:
              driver: ceph.rook.io/rook
              fsType: ceph
              options:
                fsName: myfs
                clusterNameSpace: rook-ceph
                path: /matomo
Si vous êtes perdus, souvenez-vous que je me sers d'un cluster Ceph géré par Rook. Grace à ça, je peux monter le volume contenant les sources nécessaire à l'exécution du cron, parce qu'il faut bien lancer du PHP à un moment ou un autre.

Explications

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: matomo-archive
spec:
  schedule: "*/30 * * * *"
Ici, c'est la ligne schedule qui est importante. Les habitués de la Crontab comprendront qu'elle permet de définir la fréquence d'exécution. Ici, toutes les 30 min.
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: matomo-cron
            image: matomo:3.7
À l'heure où j'écris ces lignes, la version 3.8 de Matomo est disponible mais pas son conteneur, d'où la version 3.7 précisée dans la configuration du conteneur. Gros rappel : latest n'est pas une version !
            args:
            - /bin/bash
            - -c
            - /usr/local/bin/php /var/www/html/console core:archive --url=https://url.de.mon.matomo/
La partie args permet de spécifier l'action du CronJob : ici, on va lancer un script PHP développé par Matomo avec l'url de son instance en paramètre. Tout simplement.
          volumes:
          - name: pv-matomo
            flexVolume:
              driver: ceph.rook.io/rook
              fsType: ceph
              options:
                fsName: myfs
                clusterNameSpace: rook-ceph
                path: /matomo
La partie volumes est toute basique : c'est là que je configure l'accès aux sources du conteneur qui va lancer la tâche.

On applique tout ça :
kubectl apply -f cronjob.yaml
Et on attend 30 min que le CronJon prenne la peine de démarrer. N'hésitez vraiment pas à baisser la fréquence d'exécution si vous n'avez pas que ça à faire. 5min, c'est très bien. 1min ? Laissez tomber, par contre.

Vérification

Pour vérifier que vous avez bien ce que vous avez demandé :
dada@k8smaster1:~/matomo$ k get cj
NAME             SCHEDULE       SUSPEND   ACTIVE   LAST SCHEDULE   AGE
matomo-archive   */30 * * * *   False     0        21m             28d
On retrouve bien le nom du CronJob, sa configuration et quelques infos comme la dernière exécution (21 minutes) et son age (28 jours).

Avec le temps, au bout de 1h30 si vous avez copié/collé ma configuration, vous allez remarquer que le cluster garde en mémoire les 3 dernières tentatives :
dada@k8smaster1:~/matomo$ k get pods | grep archive
matomo-archive-1548606600-4cwsl         0/1     Completed   0          84m
matomo-archive-1548608400-7lxf8         0/1     Completed   0          54m
matomo-archive-1548610200-cwh6t         0/1     Completed   0          24m
Ça vous permet d'avoir un accès aux logs rapidement. Chouette !

Vous pouvez maintenant aller jouer avec !


Crontab ? Non, Cronjob !

vendredi 15 février 2019 à 08:42


On sait tous, pour peu que notre métier consiste à passer trop d'heure devant des écrans branchés en SSH à des serveurs, qu'une action répétitive doit être gérée par la Crontab. C'est normal.
Kubernetes s'est amusé à reprendre ce principe pour y glisser du Docker, parce que voilà. Pas vraiment étonnant. Regardons ensemble ce qu'est un CronJob, l'équivalent Crontab de l'orchestrateur.

CronJob

L'idée du CronJob, c'est d'aller effectuer le travail de la Crontab alors qu'il n'est pas possible de savoir combien de conteneurs font tourner notre application. Eh oui, avec un seul conteneur, il est possible de prendre un peu de temps pour lui glisser le paquet qui va bien et ajouter la ligne de configuration qui fait le boulot, mais avec Kubernetes, c'est une autre affaire. Imaginez que vous fassiez ça avec plusieurs conteneurs : vous avez beau vous amuser à calculer le temps d'exécution du processus et ainsi décaler son lancement à la louche, vous allez vite vous retrouver avec des nœuds qui load et des données corrompues. Bref.

Matomo et son CronJob

En exemple, voici ce que je fais avec mon Matomo. Rappel rapide: Matomo est un outil d'analyse de fréquentation d'un site web bien plus propre que ses concurrents et qui, pour un logiciel libre, ne néglige pas les beaux graphiques.

La configuration

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: matomo-archive
spec:
  schedule: "*/30 * * * *"
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: matomo-cron
            image: matomo:3.7
            volumeMounts:
            - name: pv-matomo
              mountPath: /var/www/html
            args:
            - /bin/bash
            - -c
            - /usr/local/bin/php /var/www/html/console core:archive --url=https://url.de.mon.matomo/
          restartPolicy: OnFailure
          volumes:
          - name: pv-matomo
            flexVolume:
              driver: ceph.rook.io/rook
              fsType: ceph
              options:
                fsName: myfs
                clusterNameSpace: rook-ceph
                path: /matomo
Si vous êtes perdus, souvenez-vous que je me sers d'un cluster Ceph géré par Rook. Grace à ça, je peux monter le volume contenant les sources nécessaire à l'exécution du cron, parce qu'il faut bien lancer du PHP à un moment ou un autre.

Explications

apiVersion: batch/v1beta1
kind: CronJob
metadata:
  name: matomo-archive
spec:
  schedule: "*/30 * * * *"
Ici, c'est la ligne schedule qui est importante. Les habitués de la Crontab comprendront qu'elle permet de définir la fréquence d'exécution. Ici, toutes les 30 min.
  jobTemplate:
    spec:
      template:
        spec:
          containers:
          - name: matomo-cron
            image: matomo:3.7
À l'heure où j'écris ces lignes, la version 3.8 de Matomo est disponible mais pas son conteneur, d'où la version 3.7 précisée dans la configuration du conteneur. Gros rappel : latest n'est pas une version !
            args:
            - /bin/bash
            - -c
            - /usr/local/bin/php /var/www/html/console core:archive --url=https://url.de.mon.matomo/
La partie args permet de spécifier l'action du CronJob : ici, on va lancer un script PHP développé par Matomo avec l'url de son instance en paramètre. Tout simplement.
          volumes:
          - name: pv-matomo
            flexVolume:
              driver: ceph.rook.io/rook
              fsType: ceph
              options:
                fsName: myfs
                clusterNameSpace: rook-ceph
                path: /matomo
La partie volumes est toute basique : c'est là que je configure l'accès aux sources du conteneur qui va lancer la tâche.

On applique tout ça :
kubectl apply -f cronjob.yaml
Et on attend 30 min que le CronJon prenne la peine de démarrer. N'hésitez vraiment pas à baisser la fréquence d'exécution si vous n'avez pas que ça à faire. 5min, c'est très bien. 1min ? Laissez tomber, par contre.

Vérification

Pour vérifier que vous avez bien ce que vous avez demandé :
dada@k8smaster1:~/matomo$ k get cj
NAME             SCHEDULE       SUSPEND   ACTIVE   LAST SCHEDULE   AGE
matomo-archive   */30 * * * *   False     0        21m             28d
On retrouve bien le nom du CronJob, sa configuration et quelques infos comme la dernière exécution (21 minutes) et son age (28 jours).

Avec le temps, au bout de 1h30 si vous avez copié/collé ma configuration, vous allez remarquer que le cluster garde en mémoire les 3 dernières tentatives :
dada@k8smaster1:~/matomo$ k get pods | grep archive
matomo-archive-1548606600-4cwsl         0/1     Completed   0          84m
matomo-archive-1548608400-7lxf8         0/1     Completed   0          54m
matomo-archive-1548610200-cwh6t         0/1     Completed   0          24m
Ça vous permet d'avoir un accès aux logs rapidement. Chouette !

Vous pouvez maintenant aller jouer avec !


[Économie] Ordolibéralisme allemand - Crise de l'€ part 10

dimanche 10 février 2019 à 08:42

Je ne fais pas souvent de recommandations, mais là, j'ai vraiment envie de vous faire découvrir un vidéaste dont la chaîne Youtube autour de l'Économie est passionnante : Euh?reka.

Alors, il est vrai que les thèmes abordés dans mon blog sont rarement économiques mais sachez que je m'intéresse à ce sujet depuis quelques années. Peut-être depuis que j'ai compris que l'argent et les théories qui l'entourent sont souvent à l'origine de beaucoup de nos problèmes. Bref.

Avec Euh?reka, j'ai plus ou moins réussi à comprendre les mécanismes à l'origine de la crise de l'Euro. Faut dire qu'il a fait 10, je dis bien 10 vidéos sur le sujet, qui vous occuperont pendant au moins 6h ! C'est par ici.

Si je vous en parle aujourd'hui, c'est qu'il vient de sortir un nouvel épisode et qu'il se lâche ! D'habitude il reste neutre, se concentre sur l’explication du phénomène et sur ses conséquences. Là, il ose une critique que je trouve d’utilité publique !


Enfin, si la zone Euro ne vous passionne pas, vous pouvez toujours foncer regarder ses vidéos sur les thèmes suivants :

- La faillite de Lehman Brothers
- La crise des subprimes
- L'affaire Kerviel

Bref, je suis vraiment fan. Je vous laisse vous perdre dans ses vidéos. Rares sont les vidéastes qui parlent clairement d'Économie et que j'arrive à suivre. Il mérite qu'on s'attarde sur son travail !

PS : Navré pour le lien Youtube.


[Économie] Ordolibéralisme allemand - Crise de l'€ part 10

dimanche 10 février 2019 à 08:42

Je ne fais pas souvent de recommandations, mais là, j'ai vraiment envie de vous faire découvrir un vidéaste dont la chaîne Youtube autour de l'Économie est passionnante : Euh?reka.

Alors, il est vrai que les thèmes abordés dans mon blog sont rarement économiques mais sachez que je m'intéresse à ce sujet depuis quelques années. Peut-être depuis que j'ai compris que l'argent et les théories qui l'entourent sont souvent à l'origine de beaucoup de nos problèmes. Bref.

Avec Euh?reka, j'ai plus ou moins réussi à comprendre les mécanismes à l'origine de la crise de l'Euro. Faut dire qu'il a fait 10, je dis bien 10 vidéos sur le sujet, qui vous occuperont pendant au moins 6h ! C'est par ici.

Si je vous en parle aujourd'hui, c'est qu'il vient de sortir un nouvel épisode et qu'il se lâche ! D'habitude il reste neutre, se concentre sur l’explication du phénomène et sur ses conséquences. Là, il ose une critique que je trouve d’utilité publique !


Enfin, si la zone Euro ne vous passionne pas, vous pouvez toujours foncer regarder ses vidéos sur les thèmes suivants :

- La faillite de Lehman Brothers
- La crise des subprimes
- L'affaire Kerviel

Bref, je suis vraiment fan. Je vous laisse vous perdre dans ses vidéos. Rares sont les vidéastes qui parlent clairement d'Économie et que j'arrive à suivre. Il mérite qu'on s'attarde sur son travail !

PS : Navré pour le lien Youtube.