services:mattermost_upgrade

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
Dernière révisionLes deux révisions suivantes
services:mattermost_upgrade [2018/06/21 22:22] kyaneservices:mattermost_upgrade [2019/05/17 21:55] – [Build et tag des images] huetremy
Ligne 1: Ligne 1:
-====== Mise à jour de Mattermost ====== +====== Mattermost : Procédure de mise à jour ======
-[[https://about.mattermost.com/|Mattermost]] est le logiciel libre sur lequel se base Picasoft pour https://team.picasoft.net. Le logiciel est maintenu par la société [[https://github.com/mattermost|Mattermost Inc. sur Github]] qui propose, entre autre, [[https://github.com/mattermost/mattermost-docker|des images Docker]]. Cette documentation présente le processus pour mettre à jour les images utilisées par Picasoft, ainsi que le service en production.+
  
 ===== Images Docker ===== ===== Images Docker =====
Ligne 10: Ligne 9:
  
 Il faut ensuite modifier fichier ''docker-compose.yml'' du //repository// pour permettre de //builder// la version libre de Mattermost. Normalement, les lignes suivantes ne doivent pas être commentées : Il faut ensuite modifier fichier ''docker-compose.yml'' du //repository// pour permettre de //builder// la version libre de Mattermost. Normalement, les lignes suivantes ne doivent pas être commentées :
-<code>+<code yaml>
 [...] [...]
  
Ligne 27: Ligne 26:
 ==== Build et tag des images ==== ==== Build et tag des images ====
 Lorsque le dossier est prêt, on //build// très simplement les images à l'aide de ''docker-compose'' : Lorsque le dossier est prêt, on //build// très simplement les images à l'aide de ''docker-compose'' :
-<code>+<code bash>
 docker-compose build docker-compose build
 </code> </code>
-Le //build// peut durer un certain temps, une fois terminé on obtient trois images : ''mattermost_app'', ''mattermost_db'' et ''mattermost_web''. On peut les voir à l'aide de la commande ''docker images''+Le //build// peut durer un certain temps, une fois terminé on obtient trois images : `mattermost_app`, ''mattermost_db'' et ''mattermost_web''. On peut les voir à l'aide de la commande ''docker images''
-<code>+<code bash>
 kyane@laptop:~ docker images kyane@laptop:~ docker images
 REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE REPOSITORY                                      TAG                 IMAGE ID            CREATED             SIZE
Ligne 40: Ligne 39:
 On ignore l'image ''mattermost_web'', nous ne l'utilisons pas pour Picasoft car nous avons notre propre reverse-proxy (Traefik). On peut la supprimer avec ''docker rmi mattermost_web''. On ignore l'image ''mattermost_web'', nous ne l'utilisons pas pour Picasoft car nous avons notre propre reverse-proxy (Traefik). On peut la supprimer avec ''docker rmi mattermost_web''.
  
-On va maintenant ajouter des //tags// à nos images ''app'' et ''db'' pour ensuite les pousser sur le //registry// Docker de Picasoft. On va utiliser, pour chaque image, les tags ''latest'' et ''X.Y.Z'' (correspondant au numéro de version de Mattermost). On renomme les images pour les pousser sur le //registry// de Picasoft, elles auront donc la forme ''registry.picasoft.net:5000/NOMIMAGE:TAG''\\ +On va maintenant ajouter des //tags// à nos images ''app'' et ''db'' pour ensuite les pousser sur le //registry// Docker de Picasoft. On va utiliser, pour chaque image, les tags ''latest'' et ''X.Y.Z'' (correspondant au numéro de version de Mattermost). On renomme les images pour les pousser sur le //registry// de Picasoft, elles auront donc la forme ''registry.picasoft.net:5000/NOMIMAGE:TAG''. Par exemple, si nous venons de //builder// la version ''4.3.0'' de Mattermost, on va lancer les commandes suivantes : 
-Par exemple, si nous venons de //builder// la version ''4.3.0'' de Mattermost, on va lancer les commandes suivantes : +<code bash>
-<code>+
 # Tag de l'image app # Tag de l'image app
 docker tag mattermost_app registry.picasoft.net:5000/pica-mattermost:latest docker tag mattermost_app registry.picasoft.net:5000/pica-mattermost:latest
Ligne 57: Ligne 55:
  
 Nos images sont prêtes et à jour dans le //registry//. On termine par un petit ménage des images Docker en local, maintenant qu'elles sont poussées ce n'est plus utile de les conserver : Nos images sont prêtes et à jour dans le //registry//. On termine par un petit ménage des images Docker en local, maintenant qu'elles sont poussées ce n'est plus utile de les conserver :
-<code>+<code bash>
 docker rmi mattermost_app docker rmi mattermost_app
 docker rmi mattermost_db docker rmi mattermost_db
Ligne 71: Ligne 69:
   * que l'on a une backup récente de la base de données. C'est normalement le cas puisqu'elles sont automatiques;   * que l'on a une backup récente de la base de données. C'est normalement le cas puisqu'elles sont automatiques;
   * que Mattermost n'est pas trop utilisé. On ne fais pas un déploiement à 19H, la coupure va déranger tout le monde;   * que Mattermost n'est pas trop utilisé. On ne fais pas un déploiement à 19H, la coupure va déranger tout le monde;
-  * que les autres bénévoles sont au courant de la mise à jour. Même si la coupure de service est courte, un.e sysadmin qui voit que le service est tombé va s'affoler pour rien :)+  * que les autres bénévoles sont au courant de la mise à jour. Même si la coupure de service est courte, une sysadmin qui voit que le service est tombé va s'affoler pour rien :)
  
-Bref on ne se lance que lorsque l'on est prêt. Pour commencer il faut modifier les images Docker qui sont utilisées par les conteneurs de Mattermost et de sa base de données. Cela se passe dans le fichier ''/DATA/docker/docker-compose.yml'' de la machine, dans les services ''mattermost'' et ''mattermost-db''. Il suffit simplement de changer le numéro de version de l'image. **Attention !! On utilise uniquement les images ayant pour //tag// le numéro d'une version. On utilise JAMAIS ''latest'' pour éviter de tout casser, et en plus c'est plus clair comme cela.**+Bref on ne se lance que lorsque l'on est prêt. Pour commencer il faut modifier les images Docker qui sont utilisées par les conteneurs de Mattermost et de sa base de données. Cela se passe dans le fichier ''/DATA/docker/docker-compose.yml'' de la machine, dans les services ''mattermost'' et ''mattermost-db''. Il suffit simplement de changer le numéro de version de l'image. 
 + 
 +**Attention !! On utilise uniquement les images ayant pour //tag// le numéro d'une version. On utilise JAMAIS ''latest'' pour éviter de tout casser, et en plus c'est plus clair comme cela.**
  
 Lorsque c'est prêt, on //pull// les nouvelles images Docker sur la machine. On n'est pas obligé de le faire manuellement, ''docker-compose'' se chargera de le faire au redémarrage des conteneurs. Cependant cela permet de réduire le downtime, puisque l'image sera déjà en local au moment du redémarrage (on économise le temps de //pull//). Lorsque c'est prêt, on //pull// les nouvelles images Docker sur la machine. On n'est pas obligé de le faire manuellement, ''docker-compose'' se chargera de le faire au redémarrage des conteneurs. Cependant cela permet de réduire le downtime, puisque l'image sera déjà en local au moment du redémarrage (on économise le temps de //pull//).
-<code>+<code bash>
 docker pull registry.picasoft.net:5000/pica-mattermost:4.3.0 docker pull registry.picasoft.net:5000/pica-mattermost:4.3.0
 docker pull registry.picasoft.net:5000/pica-mattermost-db:4.3.0 docker pull registry.picasoft.net:5000/pica-mattermost-db:4.3.0
 </code> </code>
  
-==== Mise à jour ==== +==== Bascule en production ==== 
-Lorsque tout est bien prêt et que l'on a prévu les collègues, on peut enfin opérer à la bascule sur la nouvelle version. En pratique, on va simplement couper les conteneurs de l'application Mattermost, puis de sa base de données. On relance ensuite directement les deux services (dans l'ordre inverse), qui vont donc démarrer sur les nouvelles images. \\+Lorsque tout est bien prêt et que l'on a prévu les collègues, on peut enfin opérer à la bascule sur la nouvelle version. En pratique, on va simplement couper les conteneurs de l'application Mattermost, puis de sa base de données. On relance ensuite directement les deux services (dans l'ordre inverse), qui vont donc démarrer sur les nouvelles images. 
 Pour être sûr que tout se passe vite, sans typo ou autre problème, on peut faire tout ceci en une seule commande : Pour être sûr que tout se passe vite, sans typo ou autre problème, on peut faire tout ceci en une seule commande :
-<code>+<code bash>
 cd /DATA/docker/ && docker stop mattermost-app && docker stop -t 60 mattermost-db \ cd /DATA/docker/ && docker stop mattermost-app && docker stop -t 60 mattermost-db \
 && docker rm mattermost-app && docker rm mattermost-db \ && docker rm mattermost-app && docker rm mattermost-db \
Ligne 105: Ligne 106:
 **Attention avant toute opération de ce genre, veuillez effectuer une sauvegarde de la base de données** **Attention avant toute opération de ce genre, veuillez effectuer une sauvegarde de la base de données**
  
-<code>+<code bash>
 root@pica01:~# docker exec -it mattermost-db bash root@pica01:~# docker exec -it mattermost-db bash
 bash-4.3# psql -U postgres bash-4.3# psql -U postgres