Tester et déployer votre application

Découvrez comment exécuter en local, déployer et tester votre application sur App Engine.

Exécuter en local

Pour tester la fonctionnalité de l'application avant le déploiement, exécutez-la dans l'environnement local avec les outils de développement que vous utilisez habituellement.

Par exemple, si vous utilisez Sinatra, vous pouvez exécuter une application avec le serveur de développement de Sinatra à l'aide de la commande suivante :

bundle exec ruby app.rb -p 8080

Si vous utilisez Rails, vous pouvez démarrer une application en exécutant la commande ci-dessous :

rails server

Déployer votre application

Déployez votre application sur App Engine à l'aide de la commande gcloud app deploy. Cette commande crée automatiquement une image du conteneur à l'aide du service Cloud Build, puis déploie cette image dans l'environnement flexible App Engine. Le conteneur inclura toutes les modifications locales que vous avez déjà apportées à l'image de l'environnement d'exécution.

Pour déployer vos applications par programmation, utilisez l'API Admin.

Avant de commencer

Avant de pouvoir déployer votre application :

Garantir la réussite d'un déploiement

Si vous activez les vérifications d'état mises à jour, les déploiements sont annulés si votre application n'atteint pas un état sain.

Lorsque vous déployez votre première application dans l'environnement flexible, un délai peut s'écouler lors de la configuration de votre machine virtuelle (VM) et des autres infrastructures. Une fois la configuration initiale terminée, les vérifications d'état s'assurent que votre instance est opérationnelle et prête à recevoir du trafic. Si votre application n'est pas prête dans le délai indiqué par le champ initial_delay_sec de la section liveness_check de votre fichier app.yaml, votre déploiement échoue et est annulé.

Votre application aura peut-être besoin de davantage de temps pour être prête. Par exemple, vous devrez peut-être télécharger des fichiers volumineux ou pré-charger des caches pour initialiser votre application. Si vous utilisez des vérifications d'état mises à jour, vous pouvez augmenter ce délai en modifiant le paramètre de configuration app_start_timeout_sec dans la section readiness_check du fichier app.yaml.

Déployer un service

Vous déployez votre application sur App Engine en mettant en œuvre des versions de ses services et de chacun de leurs fichiers de configuration.

Pour déployer une version d'un service de votre application, exécutez la commande suivante dans le répertoire hébergeant le fichier app.yaml du service :

gcloud app deploy

Si vous ne spécifiez aucun fichier avec la commande, seul le fichier app.yaml de votre répertoire actuel est déployé. Par défaut, la commande deploy génère un ID unique pour la version que vous déployez. Elle effectue le déploiement de la version dans le projet GCP que vous avez configuré pour être utilisé par l'outil gcloud et achemine tout le trafic vers la nouvelle version.

Vous pouvez modifier le comportement par défaut de la commande en ciblant des fichiers spécifiques ou en incluant des paramètres supplémentaires :

  • Pour déployer les autres fichiers de configuration de votre service, vous devez cibler et déployer chaque fichier séparément. Exemple :

    gcloud app deploy cron.yaml
    gcloud app deploy dispatch.yaml
    gcloud app deploy index.yaml
    
  • Pour spécifier un ID de version personnalisé, incluez l'indicateur --version.

  • Pour empêcher l'acheminement automatique du trafic vers la nouvelle version, utilisez l'indicateur --no-promote.

  • Pour effectuer un déploiement dans un projet GCP spécifique, utilisez l'indicateur --project.

Par exemple, pour déployer le service défini par le fichier app.yaml dans un projet GCP spécifique, attribuez-lui un ID de version personnalisé et empêchez le trafic d'être acheminé vers la nouvelle version :

gcloud app deploy --project PROJECT_ID --version VERSION_ID --no-promote

Pour en savoir plus sur cette commande, consultez la documentation de référence relative à gcloud app deploy.

Déployer plusieurs services

Vous utilisez la même commande de déploiement pour déployer ou mettre à jour les différents services constituant votre application.

Pour déployer plusieurs services, mettez en œuvre séparément le fichier app.yaml de chaque service. Exemple :

gcloud app deploy service1/app.yaml
gcloud app deploy service2/app.yaml

Vous pouvez spécifier plusieurs fichiers à l'aide d'une seule commande de déploiement :

gcloud app deploy service1/app.yaml service2/app.yaml

Conditions requises pour déployer plusieurs services

  • Pour pouvoir créer et déployer des services supplémentaires, vous devez au préalable déployer une version de votre application sur le service default.

  • L'ID de chacun de vos services doit être spécifié dans les fichiers de configuration app.yaml correspondants. Pour spécifier l'ID d'un service, incluez la définition de l'élément service dans chaque fichier de configuration. Par défaut, exclure cette définition d'élément de votre fichier de configuration entraîne le déploiement de la version sur le service default.

Ignorer des fichiers

Vous pouvez utiliser un fichier .gcloudignore pour spécifier les fichiers et répertoires à ne pas importer dans GCP lorsque vous déployez vos services. Cette opération est utile pour ignorer les artefacts de compilation et d'autres fichiers qui n'ont pas besoin d'être importés lors du déploiement.

Pour en savoir plus sur la syntaxe du fichier .gcloudignore, consultez la documentation de référence sur gcloud.

Compiler manuellement un conteneur pour le déploiement

Pour compiler vos images de conteneurs en dehors de Google Cloud Platform, vous devez d'abord les importer dans un dépôt d'images de conteneurs afin de pouvoir les déployer sur App Engine à l'aide de la commande gcloud app deploy.

Par exemple, si vous compilez vos images de conteneurs en local avec Docker, vous pouvez les envoyer vers Google Container Registry, puis spécifier l'URL de votre image dans l'indicateur --image-url de la commande :

gcloud app deploy --image-url gcr.io/YOUR_PROJECT_ID/YOUR_CONTAINER_IMAGE

Utiliser des pipelines de déploiement continu automatisé

Vous pouvez utiliser Cloud Build pour automatiser les déploiements dans des pipelines de déploiement continu. Pour en savoir plus, consultez la section Déployer des artefacts et la page Automatiser les compilations avec des déclencheurs de compilation dans la documentation Cloud Build.

Images de base Docker pour Ruby

Si vous souhaitez compiler entièrement une application d'exécution personnalisée Ruby, utilisez une image de base fournie dans le fichier Dockerfile :

Environnement d'exécution Commande Docker
Ruby FROM gcr.io/google-appengine/ruby

Afficher votre application

Une fois l'application déployée sur App Engine, vous pouvez exécuter la commande suivante pour lancer votre navigateur et l'afficher à l'adresse http://YOUR_PROJECT_ID.appspot.com :

gcloud app browse

Tester sur App Engine

Avant de configurer une nouvelle version pour recevoir du trafic, vous pouvez la tester sur App Engine. Par exemple, pour tester une nouvelle version du service default :

  1. Déployez la nouvelle version et incluez l'indicateur --no-promote :

    gcloud app deploy --no-promote
  2. Affichez la nouvelle version en accédant à l'URL suivante :

    http://VERSION_ID.default.YOUR_PROJECT_ID.appspot.com
    

    Vous pouvez maintenant tester la nouvelle version dans l'environnement d'exécution App Engine. Vous pouvez déboguer votre application en consultant ses journaux dans la visionneuse de journaux Stackdriver de la console Google Cloud Platform. Pour en savoir plus, consultez la page Écrire des journaux d'application.

    Les requêtes envoyées à http://YOUR_PROJECT_ID.appspot.com seront toujours routées vers la version précédemment configurée pour recevoir le trafic.

  3. Lorsque vous souhaitez envoyer du trafic vers la nouvelle version, utilisez la console GCP pour migrer le trafic :

    Gérer les versions

    Sélectionnez la version que vous venez de déployer et cliquez sur Migrer le trafic.

Vous pouvez utiliser le même processus pour tester les nouvelles versions d'autres services en remplaçant default dans l'URL par le nom du service :

http://VERSION_ID.SERVICE_ID.YOUR_PROJECT_ID.appspot.com
Pour plus d'informations sur le ciblage de services et de versions spécifiques, consultez la section Mode de routage des requêtes.

Dépannage

Voici un message d'erreur courant que vous pouvez rencontrer lors du déploiement d'applications :

PERMISSION_DENIED: Operation not allowed
The "appengine.applications.create" permission is required.
Si le projet GCP n'inclut pas l'application App Engine requise, la commande gcloud app deploy risque d'échouer lorsqu'elle tente d'exécuter la commande gcloud app create. Seuls les comptes dotés du rôle Propriétaire disposent des autorisations nécessaires pour créer des applications App Engine.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Environnement flexible App Engine pour les documents Ruby