Premiers pas avec Node.js sur Compute Engine


Ce tutoriel explique comment débuter avec Compute Engine. Suivez-le pour déployer une application Web Hello World en Node.js dans Compute Engine. Si vous avez besoin d'aide pour vous familiariser avec App Engine, consultez la page sur l'environnement standard App Engine.

Objectifs

  • Télécharger et déployer un exemple d'application Hello World en utilisant Cloud Shell
  • Déployer un exemple d'application Hello World sur une instance Compute Engine unique

Coûts

Dans ce document, vous utilisez les composants facturables suivants de Google Cloud :

Obtenez une estimation des coûts en fonction de votre utilisation prévue à l'aide du simulateur de coût. Les nouveaux utilisateurs de Google Cloud peuvent bénéficier d'un essai gratuit.

Avant de commencer

  1. Connectez-vous à votre compte Google Cloud. Si vous débutez sur Google Cloud, créez un compte pour évaluer les performances de nos produits en conditions réelles. Les nouveaux clients bénéficient également de 300 $ de crédits gratuits pour exécuter, tester et déployer des charges de travail.
  2. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  3. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  4. Activez l'API Compute Engine

    Activer l'API

  5. Dans Google Cloud Console, sur la page de sélection du projet, sélectionnez ou créez un projet Google Cloud.

    Accéder au sélecteur de projet

  6. Vérifiez que la facturation est activée pour votre projet Google Cloud.

  7. Activez l'API Compute Engine

    Activer l'API

  8. Dans la console Google Cloud, ouvrez l'application dans Cloud Shell.

    Accéder à Cloud Shell

    Cloud Shell vous permet d'accéder en ligne de commande à vos ressources cloud, directement depuis votre navigateur.

  9. Si vous acceptez de cloner le dépôt, cliquez sur Confirmer pour télécharger l'exemple de code et accéder au répertoire de l'application.

  10. Dans Cloud Shell, configurez gcloud CLI pour utiliser votre nouveau projet Google Cloud:
    # Configure gcloud for your project
    gcloud config set project YOUR_PROJECT_ID
    

Exécuter l'application dans Cloud Shell

Si vous avez cliqué sur Accéder à Cloud Shell dans la section précédente, Cloud Shell a cloné le dépôt nodejs-getting-started sur votre instance. Une fois l'instance lancée, votre répertoire de travail est ~/cloudshell_open/nodejs-getting-started/gce. Si vous ne vous trouvez pas dans ce répertoire, consultez les étapes de la section Avant de commencer.

  1. Installez les dépendances :

    npm install
    
  2. Exécutez l'application :

    npm start
    
  3. Dans Cloud Shell, cliquez sur Aperçu sur le Web , puis sélectionnez Prévisualiser sur le port 8080. Une nouvelle fenêtre s'affiche avec votre application en cours d'exécution.

Pour arrêter le serveur Web local, appuyez sur les touches Ctrl+C.

Configurer Cloud Source Repositories

  1. Activez l'API de Cloud Source Repositories.

    Activer l'API de Cloud Source Repositories

  2. Dans la console Google Cloud, accédez à Cloud Source Repositories.

    Accéder à Cloud Source Repositories

  3. Sélectionnez Add repository (Ajouter un dépôt).

    Sélectionner "Ajouter un dépôt".

  4. Sélectionnez Créer un dépôt, puis cliquez sur Continuer.

  5. Dans le champ Nom du dépôt, saisissez new-repo.

  6. Dans le champ Projet, saisissez l'ID du projet que vous avez créé ou sélectionné pour ce tutoriel, puis cliquez sur Continuer.

  7. Sélectionnez Cloner votre dépôt vers un dépôt Git local.

  8. Dans Cloud Shell, revenez à la racine et clonez le dépôt en suivant les instructions de l'onglet SDK Google Cloud, et gardez cet onglet ouvert.

    suivre les instructions pour cloner le dépôt vers un dépôt Git local

  9. Avant de terminer la dernière étape des instructions, copiez votre application dans votre nouveau dépôt au sein de Cloud Shell :

    cd new-repo
    cp ../cloudshell_open/nodejs-getting-started/gce/app.js app.js
    cp ../cloudshell_open/nodejs-getting-started/gce/package.json package.json
    
  10. Suivez les instructions restantes dans l'onglet SDK Google Cloud pour valider vos modifications dans le dépôt. Confirmez que vous avez ajouté votre code au dépôt en actualisant le navigateur et en vérifiant que votre code a été ajouté au dépôt new-repo.

Déployer sur une seule instance

Cette section décrit la procédure d'exécution d'une seule instance de votre application sur Compute Engine.

Déploiement d'une instance unique

Depuis Cloud Shell, vous pouvez déployer une machine virtuelle (VM) d'instance unique Compute Engine, qui exécute votre application.

Utiliser un script de démarrage pour initialiser une instance

Vous avez besoin d'un outil qui indique à votre instance de télécharger et d'exécuter votre code. Une instance peut disposer d'un script de démarrage qui s'exécute à chaque démarrage ou redémarrage de l'instance.

Voici le script de démarrage inclus dans l'exemple d'application Hello World :

set -v

# Talk to the metadata server to get the project id
PROJECTID=$(curl -s "http://metadata.google.internal/computeMetadata/v1/project/project-id" -H "Metadata-Flavor: Google")
REPOSITORY="new-repo"

# Install logging monitor. The monitor will automatically pick up logs sent to
# syslog.
curl -s "https://storage.googleapis.com/signals-agents/logging/google-fluentd-install.sh" | bash
service google-fluentd restart &

# Install dependencies from apt
apt-get update
apt-get install -yq ca-certificates git build-essential supervisor

# Install nodejs
mkdir /opt/nodejs
curl https://nodejs.org/dist/v16.15.0/node-v16.15.0-linux-x64.tar.gz | tar xvzf - -C /opt/nodejs --strip-components=1
ln -s /opt/nodejs/bin/node /usr/bin/node
ln -s /opt/nodejs/bin/npm /usr/bin/npm

# Get the application source code from the Google Cloud Repository.
# git requires $HOME and it's not set during the startup script.
export HOME=/root
git config --global credential.helper gcloud.sh
git clone https://source.developers.google.com/p/${PROJECTID}/r/${REPOSITORY} /opt/app/new-repo

# Install app dependencies
cd /opt/app/new-repo
npm install

# Create a nodeapp user. The application will run as this user.
useradd -m -d /home/nodeapp nodeapp
chown -R nodeapp:nodeapp /opt/app

# Configure supervisor to run the node app.
cat >/etc/supervisor/conf.d/node-app.conf << EOF
[program:nodeapp]
directory=/opt/app/new-repo
command=npm start
autostart=true
autorestart=true
user=nodeapp
environment=HOME="/home/nodeapp",USER="nodeapp",NODE_ENV="production"
stdout_logfile=syslog
stderr_logfile=syslog
EOF

supervisorctl reread
supervisorctl update

# Application should now be running under supervisor

Le script de démarrage effectue les tâches suivantes :

  • Il installe l'agent Cloud Logging qui collecte automatiquement les journaux de syslog.

  • Il installe Supervisor pour exécuter l'application en tant que daemon.

  • Il clone le code source de l'application à partir de Cloud Source Repositories et installe des dépendances.

  • Il configure Supervisor pour exécuter l'application. Supervisor s'assure que l'application redémarre si elle se ferme de façon inattendue ou si elle est arrêtée par un administrateur ou un autre processus. Il envoie également les fichiers stdout et stderr de l'application à syslog pour qu'ils soient collectés par l'agent Logging.

Créer et configurer une instance Compute Engine

  1. Créez une instance Compute Engine :

    Linux/macOS

    gcloud compute instances create my-app-instance \
        --image-family=debian-9 \
        --image-project=debian-cloud \
        --machine-type=g1-small \
        --scopes userinfo-email,cloud-platform \
        --metadata app-location=us-central1-f \
        --metadata-from-file startup-script=gce/startup-script.sh \
        --zone us-central1-f \
        --tags http-server
    

    Windows

    gcloud compute instances create my-app-instance ^
        --image-family=debian-9 ^
        --image-project=debian-cloud ^
        --machine-type=g1-small ^
        --scopes userinfo-email,cloud-platform ^
        --metadata-from-file startup-script=gce/startup-script.sh ^
        --zone us-central1-f ^
        --tags http-server
    

    Remplacez la zone par une zone de développement. Exemple : us-central1-a. Pour en savoir plus sur les régions et les zones, consultez la page Zones géographiques et régions.

    Cette commande crée une instance, l'autorise à accéder aux services Google Cloud et exécute votre script de démarrage. Le nom de l'instance est my-app-instance.

  2. Vérifiez l'avancement de la création de l'instance :

    gcloud compute instances get-serial-port-output my-app-instance --zone YOUR_ZONE
    

    Remplacez YOUR_ZONE par la zone sur laquelle vous avez déployé votre instance.

    Une fois l'exécution du script de démarrage terminée, le message suivant s'affiche :

    startup-script: INFO Finished running startup scripts.
    
  3. Créez une règle de pare-feu pour autoriser le trafic vers votre instance :

    gcloud compute firewall-rules create default-allow-http-8080 \
        --allow tcp:8080 \
        --source-ranges 0.0.0.0/0 \
        --target-tags http-server \
        --description "Allow port 8080 access to http-server"
    

  4. Obtenez l'adresse IP externe de votre instance :

    gcloud compute instances list
    
  5. Pour voir votre application en cours d'exécution, saisissez cette URL dans votre navigateur :

    http://YOUR_INSTANCE_IP:8080
    

    Remplacez YOUR_INSTANCE_IP par l'adresse IP externe de votre instance.

Gérer et surveiller une instance

Vous pouvez surveiller et gérer votre instance à l'aide de la console GCP.

  1. Dans la console Google Cloud, accédez à la page Instances de VM.

    Accéder à la page Instances de VM

  2. Dans la liste des instances de machine virtuelle, cliquez sur SSH sur la ligne de l'instance à laquelle vous souhaitez vous connecter.
  3. Pour afficher tous les journaux générés par vos ressources Compute Engine, accédez à la page Explorateur de journaux. Accéder à l'explorateur de journaux

    Cloud Logging est automatiquement configuré de manière à collecter les journaux issus de divers services courants, comme syslog.

Effectuer un nettoyage

Pour éviter que les ressources utilisées lors de ce tutoriel soient facturées sur votre compte Google Cloud, supprimez le projet contenant les ressources, ou conservez le projet et supprimez les ressources individuelles.

Supprimer le projet

  1. Dans la console Google Cloud, accédez à la page Gérer les ressources.

    Accéder à la page Gérer les ressources

  2. Dans la liste des projets, sélectionnez le projet que vous souhaitez supprimer, puis cliquez sur Supprimer.
  3. Dans la boîte de dialogue, saisissez l'ID du projet, puis cliquez sur Arrêter pour supprimer le projet.

Supprimer les ressources individuelles

gcloud compute instances delete my-app-instance --zone=YOUR_ZONE --delete-disks=all
gcloud compute firewall-rules delete default-allow-http-8080

Étapes suivantes