Google Cloud
,Node.js
Déployer vos applications Node sur Google App Engine
Comment déployer vos applications Node sur la plateforme Google App Engine.
Stéphane
24 décembre 2021
Dans cet article, je vais vous expliquer comment déployer une application back node.js sur une instance Google App Engine.
1 - Build votre application
Si vous développez en JavaScript directement, vous pouvez passer directement à l’étape 2.
Si vous utilisez un langage de typage tel que du typescript, vous devez indiquer au système de déploiement automatique d’app engine ce qu’il doit faire avant de commencer le déploiement.
Pour se faire, c’est simple, il faut ajouter dans le package.json
un script gcp-build
contenant la commande de build de votre script :
{..."scripts": {"gcp-build": "tsc -p ./tsconfig.build.json" // <<-- ICI}}
2 - Lancement de l’application
Maintenant que vous avez du code JavaScript à exécuter, il faut indiquer à app engine la commande qu’il doit faire pour exécuter votre code.
Il vous suffit d’ajouter dans le package.json
un script start
contenant la commande d’exécution de votre app :
{..."scripts": {"start": "node dist/index.js" // <<-- ICI}}
3 - Installation des dépendances
En ce qui concerne l’installation des dépendances, il vous suffit de procéder de manière normale et de mettre dans le package.json
toutes les librairies qui sont nécessaires en production dans dependencies
.
{..."dependencies": {"express": "^4.17.1", // <<-- ICI...}}
Pensez bien à retirer les dépendances qui ne sont pas nécessaires en production afin d’alléger le déploiement.
Vous pouvez aussi bien utilisernpm
commeyarn
pour l’installation de vos dépendances, car app engine va automatiquement le détecter en fonction du package.lock ou du yarn.lock
4 - Préparation du déploiement
Maintenant que tout est prêt pour le déploiement dans Google, nous allons dans un premier temps déployer en local avec le client gcloud.
Mais afin de garder bonne maitrise du déploiement en continu, il sera préférable de le faire dans une CI afin de pouvoir effectuer des tests en amont (nous préparons un article pour expliquer comment faire).
4.1 - Création du fichier de configuration app.yaml app engine
La chose la plus importante est de créer un fichier de configuration (app.yaml
) principal de votre application à la racine du code à déployer.
Voici à quoi il ressemble :
runtime: nodejs16service: defaultinstance_class: F1automatic_scaling:target_cpu_utilization: 0.8target_throughput_utilization: 0.8max_concurrent_requests: 80includes:- env_variables.yamlhandlers:- url: /.*secure: alwaysredirect_http_response_code: 301script: auto
runtime: nodejs16
indique quelle version de node vous souhaitez utiliser en production, ici il s’agit de la version 16service: default
Indique le nom du service. Un service correspond à une instance que vous souhaitez déployer, par exemple : backend, frontend, admin… Il est important de savoir que vous devez nommer au moins un de vos services défaut.instance_class: F1
Il s’agit du type d’instance que vous souhaitez sélectionner. Il en existe plusieurs et ils définissent la puissance de la machine que vous souhaitez utiliser. Nous préparons un article qui explique comment choisir l’instance avec les optimisations de couts.automatic_scaling
Cela définit comment doit agir votre scaling automatique, à partir de quel moment, une nouvelle instance est générée afin de mieux gérer le trafic. Pareil, un article est en cours de création sur le sujet.
includes:- env_variables.yaml
Cela permet d’inclure un ou plusieurs fichiers externes comme les variables d’environnement afin de les cacher.
handlers
contiens les différentes règles du routeur et ici la seule règle qu’on a c’est le fait de rediriger toutes les routes HTTP vers du HTTPS.
4.2 - Gestion des variables d’environnement
Pour les variables d’environnement, vous pouvez créer un fichier env_variables.yaml qui doit ressembler à celui-là :
env_variables:DB_USERNAME: 'postgres'DB_PASSWORD: 'password'DB_DATABASE: 'postgres'
Il doit commencer par env_variables
et ensuite vous pouvez mettre les clés valeurs de vos variables d’environnement
N’oubliez pas de mettre le code suivant dans votre fichier app.yaml :
includes:- env_variables.yaml
4.3 - Création du projet dans app engine
Suivez les instructions de la documentation suivante : https://cloud.google.com/appengine/docs/standard/nodejs/console#console
4.4 - Installez le client gcloud en local
Suivez les instructions de la documentation suivante : https://cloud.google.com/sdk/docs/install
4.4 - Configuration du .gcloudignore
Ensuite avant de déployer, vous devez créer un fichier .gcloudignore à la racine du projet qui contient les fichiers que vous ne souhaitez pas déployer un peu comme dans le gitignore
.gcloudignore.git.gitignore.env# Node.js dependencies:node_modules/tests/dist/
4.5 - Déploiement
Afin de déployer votre projet vous devez dans un premier temps, activer l’API APP ENGINE
ici : https://console.cloud.google.com/apis/library/appengine.googleapis.com
Ensuite, lancez la commande : gcloud app deploy
Voilà vous n’avez plus qu’a suivre les instructions de déploiement pour déployer l’application.
Conclusion
Voilà, vous savez comment déployer votre application node sur Google App Engine !
Technologies dans cet article ...
Infra
Google Cloud
Back-End
Node.js