Déployer une application App Engine dans l'environnement standard vers Cloud Run

ID de la région

Le REGION_ID est un code abrégé que Google attribue en fonction de la région que vous sélectionnez lors de la création de votre application. Le code ne correspond pas à un pays ou une province, même si certains ID de région peuvent ressembler aux codes de pays et de province couramment utilisés. Pour les applications créées après février 2020, REGION_ID.r est inclus dans les URL App Engine. Pour les applications existantes créées avant cette date, l'ID de région est facultatif dans l'URL.

En savoir plus sur les ID de région

Ce guide explique comment déployer vos applications dans l'environnement standard sur Cloud Run à l'aide de Google Cloud CLI. Ces instructions s'appliquent aux environnements d'exécution de deuxième génération qui n'utilisent pas les anciens services groupés App Engine.

Cloud Run utilise en grande partie la même infrastructure que l'environnement standard App Engine. Il existe donc de nombreuses similitudes entre les plates-formes. Pour en savoir plus sur les similitudes et les différences entre App Engine et Cloud Run, y compris les avantages de la migration vers Cloud Run, consultez le résumé de la comparaison.

Pour déployer sur Cloud Run à l'aide de la commande gcloud beta app migrate, choisissez l'une des stratégies suivantes :

Avant de commencer

  1. Assurez-vous d'avoir accès au code source App Engine et que votre application App Engine s'exécute sans erreur.

  2. Activez l'API Cloud Run Admin et l'API Artifact Registry :

    Activer les API

  3. Configurez votre projet et votre région à l'aide de la commande suivante :

    gcloud auth login
    gcloud config set project PROJECT_ID
    gcloud config set run/region REGION
    gcloud components update
    

    Remplacez les éléments suivants :

    • PROJECT_ID par l'ID de votre projet Google Cloud .
    • REGION par votre région.
  4. Examinez les fonctionnalités incompatibles de votre application et supprimez-les avant de migrer vers Cloud Run. Si votre application existante comporte des fonctionnalités incompatibles, le processus de migration s'arrête et liste les incompatibilités.

  5. Passez en revue les différences Cloud Run suivantes :

    • Cloud Run utilise le terme Revision au lieu de Version pour représenter chaque déploiement de modifications dans un service spécifique. Le premier déploiement de votre application sur un service dans Cloud Run a pour effet de créer la première révision de votre application. Chaque déploiement ultérieur d'un service crée une autre révision. En savoir plus sur le déploiement sur Cloud Run.

    • Vous pouvez déployer votre code source sur Cloud Run à l'aide de la gcloud CLI ou de la console Google Cloud pour configurer et gérer les paramètres de votre application. Cloud Run ne nécessite pas de configuration basée sur des fichiers. Cependant, les configurations YAML sont prises en charge.

    • Chaque service que vous déployez sur Cloud Run utilise le domaine run.app de l'URL pour accéder au service en mode public.

    • Contrairement aux services App Engine qui sont publics par défaut, les services Cloud Run sont privés par défaut et vous obligent à les configurer pour l'accès public (non authentifié).

Rôles requis

Vous pouvez choisir de créer un nouveau compte de service ou d'utiliser dans Cloud Run le même compte de service géré par l'utilisateur que celui que vous utilisez pour App Engine. Vous ou votre administrateur devez attribuer les rôles IAM suivants au compte déployeur et au compte de service Cloud Build.

Cliquez ici pour afficher les rôles requis pour le compte déployeur

Pour obtenir les autorisations nécessaires pour compiler et déployer à partir de la source, demandez à votre administrateur de vous accorder les rôles IAM suivants :

Cliquez ici pour afficher les rôles requis pour le compte de service Cloud Build

Cloud Build utilise automatiquement le compte de service Compute Engine par défaut comme compte de service Cloud Build par défaut pour compiler votre code source et votre ressource Cloud Run, sauf si vous modifiez ce comportement. Pour que Cloud Build puisse créer vos sources, demandez à votre administrateur d'accorder le rôle Créateur Cloud Run (roles/run.builder) au compte de service Compute Engine par défaut sur votre projet :

  gcloud projects add-iam-policy-binding PROJECT_ID \
      --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \
      --role=roles/run.builder
  

Remplacez PROJECT_NUMBER par le numéro de votre projet Google Cloudet PROJECT_ID par l'ID de votre projet Google Cloud. Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez la section Créer et gérer des projets.

L'attribution du rôle "Compte de service Cloud Run" au compte de service Compute Engine par défaut prend quelques minutes à se propager.

Pour obtenir la liste des rôles et des autorisations IAM associés à Cloud Run, consultez les sections Rôles IAM Cloud Run et Autorisations IAM Cloud Run. Si votre service Cloud Run communique avec des APIGoogle Cloud , telles que les bibliothèques clientes Cloud, consultez le guide de configuration de l'identité du service. Pour en savoir plus sur l'attribution de rôles, consultez les pages Autorisations de déploiement et Gérer les accès.

Utiliser le fichier app.yaml

Traduisez votre fichier app.yaml App Engine en service Cloud Run en exécutant la commande suivante :

gcloud beta app migrate-to-run --appyaml=PATH --entrypoint=ENTRYPOINT

Remplacez les éléments suivants :

  • PATH par le chemin d'accès à votre fichier app.yaml.
  • ENTRYPOINT par la commande de point d'entrée de votre application.

Si vous êtes dans le répertoire du projet, les arguments PATH et ENTRYPOINT sont facultatifs.

Pour en savoir plus sur les arguments que vous pouvez utiliser avec la commande gcloud beta app migrate-to-run, consultez gcloud beta app migrate-to-run.

Déployer une application App Engine existante

Déployez une application App Engine existante directement sur Cloud Run en exécutant la commande suivante :

gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --entrypoint=ENTRYPOINT

Cette commande vous invite à spécifier le chemin d'accès relatif au répertoire de votre code source.

Remplacez les éléments suivants :

  • SERVICE par le nom de votre service App Engine.
  • VERSION par l'ID de la version de votre service.
  • ENTRYPOINT par la commande de point d'entrée de votre application. Si vous vous trouvez dans le répertoire du projet, cet argument est facultatif.

Pour en savoir plus sur les arguments que vous pouvez utiliser avec la commande gcloud beta app migrate, consultez gcloud beta app migrate-to-run.

Fonctionnalités incompatibles

La commande de migration échoue si votre fichier app.yaml contient l'une des configurations non compatibles suivantes :

  • Services entrants :

    inbound_services:
    - warmup
    
  • Pages d'erreur personnalisées :

    error_handlers:
    - file: default_error.html
    - error_code: over_quota
      file: over_quota.html
    
  • Services groupés pour les environnements d'exécution de deuxième génération :

    app_engine_apis: true
    
  • Variables d'environnement de compilation :

    build_env_variables:
      Foo: Bar
    
  • Environnements d'exécution de première génération :

    runtime: python27
    

Étapes suivantes