Plan de reprise - SocialGouv/code-du-travail-numerique GitHub Wiki
Arbre de dépendances
flowchart BT
cdtn-admin --> legi-data
cdtn-admin --> kali-data
cdtn-admin --> fiches-travail-data
cdtn-admin --> fiches-vdd
code-du-travail-numerique --> cdtn-admin
Chronologie des tâches de reprise
gantt
dateFormat HH
axisFormat %H
section EXT
Récupération du code source de l'applicatif : gt1, 08, 5m
Vérification des sources de données : gt2, after gt1, 5m
Vérification des services annexes : gt3, after gt2, 5m
Vérification des accès aux bases de données : gt4, after gt3, 5m
section ADMIN
Déploiement via la CI : tt1, after gt4, 20m
Restauration du backup : tt2, after tt1, 5m
Ingestion des données externes : tt3, after tt2, 6m
Mise à jour de la preprod : tt4, after tt3, 1h
Mise à jour de la prod : tt5, after tt4, 1h
section FRONT
Déploiement via la CI : tp1, after tt5, 20m
Pré-requis
- Le service Github doit être accessible
- La CI / CD doit être fonctionnelle (kontinuous + cluster en état de marche)
- Un backup de la base de données de l'application d'administration
- Les bases de données Elasticsearch et PostgreSQL doivent être accessibles, celle-ci peuvent être totalement vides
- Poste configuré avec un accès au cluster de production
1er étape : Récupération du code source de l'applicatif
- Cloner le projet code du travail numérique
- Cloner le projet cdtn-admin
Estimation du temps : ~ 5 minutes
2ème étape : Vérification des sources de données
- https://github.com/SocialGouv/legi-data
- https://github.com/SocialGouv/kali-data
- https://github.com/SocialGouv/fiches-travail-data
- https://github.com/SocialGouv/fiches-vdd
De plus, comme j'ai pu l'indiqué précédemment dans les pré-requis, il nous faut absolument un backup de la base de données, afin de ne pas perdre toute la donnée utilisateur enregistré
Estimation du temps : ~ 5 minutes
3ème étape : Vérification des services annexes
- Il faudra vérifier que le projet recherche-entreprises soit bien disponible. https://api.recherche-entreprises.fabrique.social.gouv.fr
- Et aussi, le projet serving-ml soit bien disponible. https://serving-ml.fabrique.social.gouv.fr. Celui-ci est utilisé dans notre moteur de recherche pour l'aspect sémantique.
- De manière optionnel, vérifier que matomo pour l'analytics soit bien en route. https://matomo.fabrique.social.gouv.fr
- De manière optionnel, le faire aussi pour Sentry, afin de nous remonter des soucis sur l'applicatif https://sentry.fabrique.social.gouv.fr
Estimation du temps : ~ 5 minutes
4ème étape : Vérification des bases de données
Note : Ce processus est à effectuer si les credentials d'accès aux bases de données ont été modifiés
- Accéder à la base de données PostgreSQL afin que l'application d'administration puisse avoir des services qui se connecte à celle-ci
- Faire la même procédure pour la base de données Elasticsearch qui va être utilisée par le frontend
Les credentials d'accès doivent être de nouveau sceller sur l'application : https://socialgouv.github.io/sre-tools/, et ensuite être mis à jour dans les variables d’environnement du folder kontinuous
Estimation du temps : ~ 5 minutes
5ème étape : Lancement de l'administration
La première étape est la partie déploiement qui devrait être effective grace à la CI / CD. Nous utilisons kontinuous pour cela.
Estimation du temps : ~ 20 minutes
Une fois l'outil d'administration déployé et accessible, nous devons effectuer un pg_restore
avec le backup
Estimation du temps : ~ 5 minutes
Lorsque le dernier backup est effectif au sein de PostgreSQL, nous pouvons lancer la commande suivante :
kubectl create job --from=cronjob/cron-ingester cron-ingester-manual
Estimation du temps : ~ 6 minutes
Le but est de tourner l'ingester
, qui est un service qui va récupérer les dernières versions des fichiers issus des repositories Github de data.
Une fois cela effectué, il faudra se connecter à l'administration avec un compte précédemment utilisé dans les backups pour lancer une mise à jour de la preproduction, puis de la production.
Le but sous-jacent étant d'utiliser le service export-elasticsearch
, qui permet d'exporter les données depuis PostgreSQL en passant par Hasura, vers Elasticsearch.
Estimation du temps : La durée de la mise à jour de la preproduction est d'environ 1 heure, le temps est similaire pour celui de la production.
6ème étape : Lancement du frontend
Lorsque les données sont à jours, il ne reste plus qu'à lancer le processus de CI / CD du frontend résumé dans ce wiki : https://github.com/SocialGouv/code-du-travail-numerique/wiki/D%C3%A9clencher-une-mise-en-production afin de déployer la dernière version du frontend.
Dans le cas où la CI / CD est fonctionnel, le frontend sera déployé sur les dernières données issues du backup de la base de données qui a été mis à jour avec les dernières données issues des repository Github de data.
Estimation du temps : ~ 20 minutes
7ème étape : Vérification du déploiement du site principal
Il faut se connecter sur https://code.travail.gouv.fr
Estimation total du temps : ~ 3 heures 30 minutes