Table des matières

Documentation de l'opération de maintenance 19-062 : conteneurisation des services.

Le but étant de sécuriser les sauvegardes et de faciliter les redéploiements à partir des sauvegardes en cas de problème. Cela permettrait aussi une réplication plus simple entre deux serveurs, en configuration « failover ». Sur cette page, vous trouverez alors toutes les étapes de ces opérations de maintenance, documentées. Vous pouvez aussi trouver des informations concernant l'avancement des opérations sur le bugtracker.

Cette opération est la genèse de la version ClusterOne du projet, succédant à CrimeOfTheCentury.

Recensement des services

:!: Le choix technique ayant varié depuis le lancement de cette étude, cette section ne s'avère plus être pertinente et doit être mise à jour (18/11/2020) :!:

Cette étape consiste en la liste des services actuellement installés et de leurs dépendances systèmes, afin de connaître exhaustivement ce qu'il sera nécessaire de réinstaller dans les conteneurs. Tout ce qui est téléchargeable comme certains services web ne nécessiteront que la copie des répertoires d'installation avec parfois éventuellement l'installation de dépendances systèmes. Pour les autres services, seules les configurations seront utiles, il faut donc lister exhaustivement les fichiers/répertoires de configuration.

Services orientés web

Sans mention contraire, la version de PHP est 7.3 (FPM et CLI). Concernant MySQL, une étude devra être réalisée pour la migration vers MariaDB.

Services mail

Migration

Base de données

#102

Création de l'arborescence pour le projet ClusterOne

Cette première migration a été l'occasion de penser l'architecture de plus près et de “se faire la main” sur Docker. Une arborescence dédiée a ainsi été crée sur le serveur afin d'y conserver les configurations, scripts de déploiement, volumes et autres ressources. Toujours en termes d'architecture, un réseau bridge personnalisé Docker a été créé (tru-net). Il permet de disposer d'un réseau auquel rattacher l'ensemble des conteneurs.

Deux conteneurs ont été créés : tru-mariadb, une instance MariaDB qui accueille les données de l'ancienne instance MySQL ; tru-adminer, issu d'une image officielle Adminer et disponible à l'adresse admin.the-redunicorn.fr/adminer. L'ensemble des services utilisent dorénavant cette nouvelle instance. Cette migration a été l'occasion de nettoyer la base de données et de les isoler correctement les unes des autres.

Quelques remarques ou points de vigilance :

Commandes utiles :

sed -i "s/latin1/utf8/" file
sudo sh -c 'mysqldump -u root -p db > db.sql'
sudo sh -c 'docker exec -i container sh -c \'exec mysql -u root -p db\' < db.sql'

Flyspray (bugs.the-redunicorn.fr)

#103

Une première idée pour cette migration était de construire un unique conteneur à partir d'une image PHP Alpine en y ajoutant ensuite NGINX (apk add nginx). Finalement, l'idée de séparer le plus possible les applications a été préférée. On dispose alors de deux conteneurs : tru-flyspray, sur la base d'une image NGINX Alpine dans lequel on copie la sommaire configuration ; tru-flyspray_php, à partir d'une image PHP-FPM Alpine à laquelle on ajoute l'extension php mysqli (docker-php-ext-install mysqli).

Les quelques points de vigilance sont :

Intégration