Esegui il deployment di un'app App Engine nell'ambiente flessibile su Cloud Run

ID regione

REGION_ID è un codice abbreviato che Google assegna in base alla regione selezionata quando crei l'app. Il codice non corrisponde a un paese o a una provincia, anche se alcuni ID regione potrebbero sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL di App Engine. Per le app esistenti create prima di questa data, l'ID regione è facoltativo nell'URL.

Scopri di più sugli ID regione.

Questa guida descrive come eseguire il deployment delle tue app esistenti nell'ambiente flessibile in Cloud Run.

I passaggi descritti in questa guida non influiscono sulla funzionalità o sul flusso di traffico dell'app App Engine esistente. Il servizio Cloud Run appena creato è una replica del servizio App Engine che puoi testare in modo indipendente.

L'ambiente flessibile di App Engine e Cloud Run sono entrambe piattaforme per applicazioni completamente gestite e container-native, ma differiscono dal punto di vista strutturale. Per scoprire di più sulle somiglianze e sulle differenze tra App Engine e Cloud Run, inclusi i vantaggi della migrazione a Cloud Run, consulta il riepilogo del confronto.

Per eseguire il deployment in Cloud Run, utilizza la configurazione locale del file app.yaml. In questo modo viene creata un'immagine container dal codice sorgente locale, in modo che tutte le modifiche recenti al codice o alla configurazione siano incluse nel nuovo deployment.

Prima di iniziare

  1. Assicurati che l'applicazione App Engine venga eseguita senza errori. Se scegli di eseguire il deployment utilizzando la configurazione locale, devi avere accesso al codice sorgente di App Engine.

  2. Abilita l'API Cloud Run Admin e l'API Artifact Registry:

    Abilita le API

  3. Configura il progetto e la regione utilizzando il seguente comando:

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

    Sostituisci quanto segue:

    • PROJECT_ID: il tuo ID progetto Google Cloud .
    • REGION: la regione in cui vuoi eseguire il deployment del servizio Cloud Run.
  4. Verifica la presenza di funzionalità incompatibili nella tua applicazione e rimuovile prima di eseguire la migrazione a Cloud Run. Per verificare l'incompatibilità della tua applicazione senza eseguire una migrazione o un deployment, esegui questo comando:

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

    Esamina i risultati del controllo di compatibilità e apporta le modifiche consigliate, se necessario.

  5. Esamina le seguenti differenze di Cloud Run:

    • Cloud Run utilizza il termine Revision, anziché Version, per rappresentare ogni volta che esegui il deployment delle modifiche a un servizio specifico. Eseguendo il deployment della tua app in un servizio in Cloud Run per la prima volta viene creata la prima revisione. Ogni deployment successivo di un servizio crea un'altra revisione. Scopri di più sul deployment in Cloud Run.

    • Puoi eseguire il deployment del codice sorgente in Cloud Run utilizzando gcloud CLI per configurare e gestire le impostazioni dell'app. Cloud Run non richiede una configurazione basata su file, ma supporta la configurazione YAML.

    • Ogni servizio di cui esegui il deployment in Cloud Run utilizza il dominio run.app nell'URL per accedere pubblicamente al servizio.

    • A differenza dei servizi App Engine, che sono pubblici per impostazione predefinita, i servizi Cloud Run sono privati per impostazione predefinita e richiedono la configurazione per l'accesso pubblico (non autenticato).

Ruoli obbligatori

Puoi scegliere di creare un nuovo account di servizio o utilizzare lo stesso account di servizio gestito dall'utente in Cloud Run che utilizzi per l'ambiente flessibile. Tu o il tuo amministratore dovete concedere all'account deployer e al account di servizio Cloud Build i seguenti ruoli IAM.

Fai clic per visualizzare i ruoli richiesti per l'account deployer

Per ottenere le autorizzazioni necessarie per creare ed eseguire il deployment dal codice sorgente, chiedi all'amministratore di concederti i seguenti ruoli IAM:

Fai clic per visualizzare i ruoli richiesti per il account di servizio Cloud Build

Cloud Build utilizza automaticamente l'account di servizio predefinito di Compute Engine come account di servizio Cloud Build predefinito per creare il codice sorgente e la risorsa Cloud Run, a meno che non esegui l'override di questo comportamento. Per consentire a Cloud Build di creare le tue origini, chiedi all'amministratore di concedere il ruolo Cloud Run Builder (roles/run.builder) al account di servizio Compute Engine predefinito nel tuo progetto:

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

Sostituisci PROJECT_NUMBER con il numero del tuo progetto Google Cloude PROJECT_ID con l'ID del tuo progetto Google Cloud. Per istruzioni dettagliate su come trovare l'ID progetto e il numero di progetto, consulta Creazione e gestione dei progetti.

La concessione del ruolo Cloud Run Builder al account di servizio predefinito di Compute Engine richiede un paio di minuti per la propagazione.

Per un elenco di ruoli e autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il tuo servizio Cloud Run interagisce con le APIGoogle Cloud , come le librerie client Cloud, consulta la guida alla configurazione dell'identità del servizio. Per saperne di più sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestisci l'accesso.

Utilizza la configurazione locale di un file app.yaml

Per eseguire il deployment del servizio Cloud Run utilizzando il file app.yaml locale di una configurazione App Engine esistente, segui questi passaggi:

  1. Nel terminale, passa alla directory di origine in cui si trova il file app.yaml.

  2. Esegui questo comando per eseguire il deployment del servizio in Cloud Run:

    gcloud beta app migrate-to-run
    

    Questo comando genera la configurazione del file service.yaml per Cloud Run e la salva localmente nella stessa directory del file app.yaml. Per saperne di più, consulta gcloud beta app migrate-to-run.

    • Quando richiesto Proceed with the deployment?, inserisci Y per creare un'immagine container dal codice sorgente ed eseguire il deployment del servizio in Cloud Run.
  3. Visita il servizio Cloud Run di cui hai eseguito il deployment aprendo l'URL del servizio in un browser web.

    Facoltativamente,

    • Se il file app.yaml si trova in una directory diversa, specifica il percorso utilizzando il flag --appyaml:

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

      Sostituisci PATH con il percorso del file app.yaml.

    • Per generare ed esportare la configurazione di Cloud Run service.yaml senza eseguire il deployment del servizio, esegui questo comando:

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

      Sostituisci EXPORT_PATH con la directory o il percorso in cui vuoi salvare il file service.yaml.

Funzionalità incompatibili

Il comando di migrazione non va a buon fine se il file app.yaml contiene la seguente configurazione non supportata:
  • Servizi in entrata:

    inbound_services:
    - warmup
    

    Soluzione: elimina la sezione inbound_services dal file app.yaml. Cloud Run prepara le istanze utilizzando l'entrypoint del container, quindi non è necessario configurare le richieste di warmup. Se devi eseguire il codice di inizializzazione prima di gestire il traffico, configura il servizio in modo che lo esegua all'avvio, prima di ascoltare le richieste o utilizza i probe di avvio. Puoi anche configurare un numero minimo di istanze per mantenerle attive.

Passaggi successivi