Skip to content

Latest commit

 

History

History
132 lines (96 loc) · 8.63 KB

README.md

File metadata and controls

132 lines (96 loc) · 8.63 KB

Déploiement

Nous utilisons Scalingo pour gérer les déploiements de DiaLog.

Prérequis

Pour pouvoir faire un déploiement depuis Scalingo, vous devez au préalable avoir un compte avec une adresse @beta.gouv.fr.

Un membre de l'équipe doit ensuite vous ajouter à l'organisation DiaLog.

🚀 Production

URL : https://dialog.beta.gouv.fr

L'environnement de production est automatiquement déployé lors d'un push sur la branche main.

Accédez au détail du build sur le dashboard Scalingo ou accédez à https://dialog.beta.gouv.fr pour vérifier que le déploiement s'est bien déroulé.

🛠️ Staging

URL : https://dialog.incubateur.net/

L'environnement staging est automatiquement déployé lors d'un push sur la branche main.

Il peut aussi être déployé manuellement :

Utilisez le dashboard Scalingo ou accédez à https://dialog.incubateur.net pour vérifier que le déploiement s'est bien déroulé.

Environnements de branche

Lorsque vous créez une pull request, une application dédiée ("Review App") est automatiquement créée à partir de l'application staging puis déployée par Scalingo.

Cela permet par exemple de partager à d'autres membres de l'équipe la version déployée d'un travail en cours afin de collecter leurs retours.

Vous pouvez trouver l'URL d'une application de branche grâce à la liste des applications sur Scalingo, ou bien en cliquant sur le lien "Details" du check deploy/sclng, en bas de la PR :

Exemple de liste de checks

Contenu d'un environnement

Architecture

L'infrastructure d'un environnement est déployée et gérée par Scalingo et s'articule comme suit :

  • Le buildpack PHP orchestre un conteneur appelé web qui contient :
  • Le serveur PHP communique avec la base de données PostgreSQL.
  • Le serveur PHP communique avec la base de données Redis, notamment pour le stockage des sessions utilisateurs.
  • Le serveur PHP communique avec des services tiers :
    • API Adresse : géocodage d'adresses.
    • BD TOPO : données géographiques (hébergées sur l'app dialog-bdtopo).
    • Sentry : collecte et analyse des erreurs applicatives.
    • Matomo : collecte et analyse de données de trafic utilisateur.
    • Metabase : statistiques et suivi d'indicateurs (hébergé sur l'app dialog-metabase).

Diagramme :

                                            dialog-bdtopo
                                             ┌ - - - - ┐
                                        ┌----  BD TOPO
                                        |    └ - - - - ┘
                      dialog            |
        ┌-------------------------------|-┐  ┌ - - - - - - ┐
WWW ------ nginx (:443) --- php --------┼----  API Adresse
        |                    |          | |  └ - - - - - - ┘
        |               ┌----┴----┐     | |  ┌ - - - -┐
        |           ┌ - ┴ - ┐ ┌ - ┴ - ┐ ├----  Sentry
        |             PgSQL     Redis   | |  └ - - - -┘
        |           └ - ┬ - ┘ └ - - - ┘ | |  ┌ - - - -┐
        |               |               └----  Matomo
        └---------------|-----------------┘  └ - - - -┘
                        | dialog-metabase
                        |  ┌ - - - - -┐ 
                        └--  Metabase
                           └ - - - - -┘

Ressources

Voici, à date, une liste des ressources utilisées dans un environnement.

Ressource Localisation Contact
Application Scalingo Scalingo BetaGouv (dialog) tristan.robert[ @ ]beta.gouv.fr
Base de données PostgreSQL Scalingo BetaGouv (dialog, add-on) tristan.robert[ @ ]beta.gouv.fr
Serveur Redis Scalingo BetaGouv (dialog, add-on) tristan.robert[ @ ]beta.gouv.fr
Enregistrement DNS Zone DNS de BetaGouv tristan.robert[ @ ]beta.gouv.fr
BD TOPO Scalingo BetaGouv (dialog-bdtopo) tristan.robert[ @ ]beta.gouv.fr
Projet Sentry Sentry de BetaGouv tristan.robert[ @ ]beta.gouv.fr
Site Matomo Matomo BetaGouv ~incubateur-ops
Metabase et son PostgreSQL Scalingo BetaGouv (dialog-metabase) tristan.robert[ @ ]beta.gouv.fr

Configuration

Chaque application peut être configurée avec les variables d'environnement suivantes, dont certaines sont obligatoires. Elles sont listées dans l'ordre alphabétique.

Variable d'environnement Description Valeur par défaut Notes
API_ADRESSE_BASE_URL URL de l'instance API Adresse à utiliser https://api-adresse.data.gouv.fr
BDTOPO_DATABASE_URL URL de connexion PostgreSQL à notre hébergement BD TOPO (Obligatoire) En développement, à récupérer auprès d'un membre de l'équipe
APP_EUDONET_PARIS_BASE_URL URL de l'API Eudonet Paris https://eudonet-partage.apps.paris.fr
APP_EUDONET_PARIS_ORG_ID Utiliser l'UUID de l'organisation Ville de Paris Vide
APP_JOP_ORG_ID UUID de l'organisation où intégrer les données JOP Vide
APP_SECRET Correspond au paramètre Symfony secret (Obligatoire) Longueur recommandée : 32 caractères. Exemple : générer avec python3 -c 'import secrets; print(secrets.token_hex(16))'
APP_CIFS_FILTERS Filtre les données exportées vers CIFS {} Format JSON, champs acceptés : allowed_sources, excluded_identifiers, allowed_location_isd. L'objet vide {} a pour effet de continuer de toute exporter.
METABASE_SECRET_KEY Clé secrète pour la signature JWT des graphiques Metabase (Obligatoire) À récupérer dans l'administration Metabase
DATABASE_URL URL vers le serveur PostgreSQL (Obligatoire) $SCALINGO_POSTGRESQL_URL La variable $SCALINGO_POSTGRESQL_URL est configurée automatiquement par Scalingo
MATOMO_ENABLED true (ou autre valeur truthy) pour activer les analytics, false pour ne pas les activer false
PHP_BUILDPACK_NO_NODE Désactive le support Node.js dans le buildpack PHP, puisqu'on utilise le buildpack Node.js complet (voir .buildpacks). (Obligatoire) true Voir : PHP application with Node.js (Scalingo docs)
REDIS_URL URL vers le serveur Redis (Obligatoire) $SCALINGO_REDIS_URL La variable $SCALINGO_REDIS_URL est configurée automatiquement par Scalingo
SENTRY_DSN URL de collecte Sentry À récupérer sur l'instance Sentry. Voir : Monitoring
WEB_CONCURRENCY Nombre de processus enfants créés par PHP-FPM (pm.max_children). Dépend de la memory_limit et de la RAM de la machine. Utiliser 2. Peut être ajusté pour optimiser le fonctionnement du serveur. Voir : PHP-FPM Concurrency (Scalingo docs)

Retirer un environnement

Lorsqu'un environnement décrit ci-dessus n'est plus utile, il devrait être retiré pour libérer les ressources informatiques associées.

Pour ce faire :

  • S'assurer que l'environnement n'est effectivement plus utilisé et qu'il peut être supprimé définitivement.
  • Débrancher le nom de domaine de l'application.
  • Retirer l'application sur Scalingo. Cela libèrera aussi les add-ons associés (PostgreSQL, Redis).
  • Supprimer le projet Sentry correspondant.
  • Mettre à jour la présente documentation.

En cas de problèmes de permissions, demander l'aide de tristan.robert[ @ ]beta.gouv.fr.