Déployer une application App Engine dans l'environnement flexible 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 existantes dans l' environnement flexible vers Cloud Run.

Les étapes décrites dans ce guide n'affectent pas les fonctionnalités ni le flux de trafic de votre application App Engine existante. Le service Cloud Run nouvellement créé est une réplique du service App Engine que vous pouvez tester indépendamment.

L'environnement flexible App Engine et Cloud Run sont tous deux des plates-formes d'applications entièrement gérées et natives des conteneurs, mais leur structure diffère. 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, choisissez l'une des stratégies suivantes :

  • Utiliser la configuration locale d'un fichier app.yaml (recommandé) : Choisissez cette option pour créer une image de conteneur directement à partir de votre code source local et la déployer sur Cloud Run. Cela garantit que toutes les modifications locales récentes apportées à votre code ou à votre configuration sont incluses dans le nouveau déploiement.

  • Utiliser une image précédemment créée: Cette option est utile si vous n'avez pas accès au code source. Choisissez cette option pour déployer une copie exacte d'une version déjà exécutée sur App Engine, sans recréer l'image de conteneur. Cela est utile si vous souhaitez vérifier le comportement du déploiement actif sans modifier le code.

Avant de commencer

  1. Assurez-vous que votre application App Engine s'exécute sans erreur. Vous devez avoir accès à votre code source App Engine si vous choisissez de déployer à l'aide de votre configuration locale.

  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: ID de votre Google Cloud projet.
    • REGION : région dans laquelle vous souhaitez déployer votre service Cloud Run.
  4. Recherchez les fonctionnalités incompatibles dans votre application et supprimez-les avant de migrer vers Cloud Run. Pour vérifier l'incompatibilité de votre application sans effectuer de migration ni de déploiement, exécutez la commande suivante :

    gcloud beta app migrate-to-run --dry-run
    

    Examinez les résultats de la vérification de la compatibilité et apportez les modifications recommandées si nécessaire.

  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 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 run.app domaine 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 compte de service ou d'utiliser le même compte de service géré par l'utilisateur dans Cloud Run que celui que vous utilisez pour l'environnement flexible. 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 créer 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 créer votre code source et votre ressource Cloud Run, sauf si vous remplacez ce comportement. Pour que Cloud Build puisse créer vos sources, demandez à votre administrateur d'accorder le rôle Compilateur 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 votre Google Cloud numéro de projet et PROJECT_ID par votre Google Cloud ID de projet. Pour obtenir des instructions détaillées sur la recherche de votre ID et de votre numéro de projet, consultez Créer et gérer des projets.

La propagation de l'attribution du rôle de compilateur Cloud Run au compte de service Compute Engine par défaut prend quelques minutes pour 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 Google Cloud des API, 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 la configuration locale d'un fichier app.yaml

Pour déployer votre service Cloud Run à l'aide du fichier app.yaml local d'une configuration App Engine existante, procédez comme suit :

  1. Dans votre terminal, accédez au répertoire source où se trouve le fichier app.yaml.

  2. Exécutez la commande suivante pour déployer votre service sur Cloud Run :

    gcloud beta app migrate-to-run
    

    Cette commande génère la configuration du fichier service.yaml pour Cloud Run et l'enregistre localement dans le même répertoire que votre fichier app.yaml. Pour en savoir plus, consultez gcloud beta app migrate-to-run.

    • Lorsque vous êtes invité à répondre à la question Proceed with the deployment?, saisissez Y pour créer une image de conteneur à partir de votre code source et déployer le service sur Cloud Run.
  3. Accédez à votre service Cloud Run déployé en ouvrant l'URL du service dans un navigateur Web.

    Facultatif :

    • Si votre fichier app.yaml se trouve dans un autre répertoire, spécifiez son chemin d'accès à l'aide de l'option --appyaml :

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

      Remplacez PATH par le chemin d'accès à votre fichier app.yaml.

    • Pour générer et exporter la configuration service.yaml de Cloud Run sans déployer le service, exécutez la commande suivante :

      gcloud beta app migrate-to-run --export-only=EXPORT_PATH
      

      Remplacez EXPORT_PATH par le répertoire ou le chemin d'accès où vous souhaitez enregistrer le service.yaml fichier.

Utiliser une image précédemment créée

Pour déployer à l'aide d'une image de conteneur précédemment créée à partir d'une version App Engine déployée au lieu de recréer l'image de conteneur à partir d'un fichier app.yaml local, procédez comme suit :

Vous n'avez pas besoin du code source de votre application pour ce déploiement.

  1. Exécutez la commande suivante pour déployer votre service sur Cloud Run. Cette commande utilise l'image de conteneur d'un déploiement App Engine actif et ne capture pas les modifications récentes de votre fichier app.yaml local, ce qui peut entraîner un déploiement obsolète :

    gcloud beta app migrate-to-run --service=SERVICE --version=VERSION --from-image
    

    Remplacez les éléments suivants :

    • SERVICE : nom de votre service App Engine.
    • VERSION : ID de version de votre service.

    Cette commande récupère la configuration du service et de la version spécifiés pour générer le fichier service.yaml pour Cloud Run. Pour en savoir plus, consultez gcloud beta app migrate-to-run.

    • Lorsque vous êtes invité à répondre à la question Proceed with the deployment?, saisissez Y pour exporter votre image de conteneur App Engine existante et déployer le service sur Cloud Run.
  2. Accédez à votre service Cloud Run déployé en ouvrant l'URL du service dans un navigateur Web.

    Facultatif :

    • Pour générer la configuration service.yaml de Cloud Run sans déployer le service, exécutez la commande suivante :

      gcloud beta app migrate-to-run --service=SERVICE \
          --version=VERSION \
          --from-image \
          --export-only=EXPORT_PATH
      

      Remplacez EXPORT_PATH par le répertoire ou le chemin d'accès où vous souhaitez enregistrer le fichier service.yaml.

Fonctionnalités incompatibles

La commande de migration échoue si votre fichier app.yaml contient la configuration non compatible suivante :
  • Services entrants :

    inbound_services:
    - warmup
    

    Solution : Supprimez la section inbound_services de votre fichier app.yaml. Cloud Run préchauffe les instances à l'aide du point d'entrée du conteneur. Vous n'avez donc pas besoin de configurer les requêtes de préchauffage. Si vous devez exécuter du code d'initialisation avant de diffuser le trafic, configurez votre service pour qu'il s'exécute au démarrage, avant d'écouter les requêtes ou d'utiliser des vérifications de démarrage. Vous pouvez également configurer des instances minimales pour maintenir les instances préchauffées.

Étape suivante