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

ID regione

Il 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 possono sembrare simili ai codici di paesi e province di uso comune. Per le app create dopo febbraio 2020, REGION_ID.r è incluso negli URL 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 app nell'ambiente standard in Cloud Run utilizzando Google Cloud CLI. Le istruzioni sono applicabili ai runtime di seconda generazione che non utilizzano i servizi in bundle legacy di App Engine.

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.

Cloud Run utilizza gran parte della stessa infrastruttura dell'ambiente standard di App Engine, il che comporta molte somiglianze tra le piattaforme. Per scoprire di più sulle somiglianze e differenze tra App Engine e Cloud Run, inclusi i vantaggi della migrazione a Cloud Run, consulta il riepilogo del confronto.

Per il deployment in Cloud Run, scegli una delle seguenti strategie:

Prima di iniziare

  1. Assicurati di avere accesso al codice sorgente di App Engine e che l'applicazione App Engine venga eseguita senza errori.

  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 con l'ID progetto Google Cloud .
    • REGION con la tua regione.
  4. Esamina le funzionalità incompatibili nella tua applicazione e rimuovile prima di eseguire la migrazione a Cloud Run. Se nell'applicazione esistente sono presenti funzionalità incompatibili, il processo di migrazione si interrompe ed elenca le incompatibilità.

  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 su Cloud Run utilizzando gcloud CLI o la console Google Cloud per configurare e gestire le impostazioni dell'app. Cloud Run non richiede la configurazione basata su file, ma è supportata la configurazione YAML.

    • Ogni servizio di cui esegui il deployment su 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 di utilizzare lo stesso account di servizio gestito dall'utente in Cloud Run che utilizzi per App Engine. Tu o il tuo amministratore dovete concedere all'account di deployment e al account di servizio Cloud Build i seguenti ruoli IAM.

Fai clic per visualizzare i ruoli richiesti per l'account di deployment

Per ottenere le autorizzazioni necessarie per compilare 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 service account Cloud Build predefinito per creare il codice sorgente e la risorsa Cloud Run, a meno che tu non esegua 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 progetto Google Cloud. Per istruzioni dettagliate su come trovare l'ID progetto e il numero di progetto, vedi Creazione e gestione dei progetti.

La concessione del ruolo Cloud Run Builder al account di servizio Compute Engine predefinito richiede alcuni 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.

Eseguire il deployment di un'applicazione App Engine esistente

Esegui il deployment di un'app App Engine esistente direttamente in Cloud Run utilizzando la consoleGoogle Cloud o gcloud CLI.

Console

  1. Nella console Google Cloud , vai alla pagina App Engine.

    Vai ad App Engine

  2. Nel menu di navigazione, fai clic su Hub di migrazione per eseguire il deployment dell'app App Engine in Cloud Run. L'hub di migrazione ti consente anche di controllare i risparmi stimati su Cloud Run per la stima dei costi e i consigli.

  3. Seleziona il servizio che vuoi migrare e fai clic su Verifica compatibilità.

  4. Seleziona il servizio e la versione per visualizzare i risultati di compatibilità. L'hub di migrazione esegue un controllo di compatibilità per identificare le funzionalità incompatibili.

  5. Esamina i risultati per verificare che la tua app sia completamente compatibile con Cloud Run e fai clic su Continua per passare alla sezione Rivedi e implementa.

  6. Copia il comando nella sezione Deployment tramite gcloud ed eseguilo nella directory del progetto.

  7. Fai clic su Visualizza versioni di cui è stato eseguito il deployment per visualizzare i servizi App Engine di cui è stato eseguito il deployment in Cloud Run.

gcloud

Utilizza Google Cloud CLI per eseguire la migrazione dell'applicazione utilizzando il file app.yaml locale o una configurazione di deployment di App Engine esistente.

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

  2. Esegui questo comando:

    gcloud beta app migrate-to-run
    

    Se il file app.yaml si trova in una directory diversa, includi il flag --appyaml:

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

    Sostituisci PATH con il percorso del file app.yaml.

Per saperne di più, consulta gcloud beta app migrate-to-run.

Utilizzare il file app.yaml

Traduci il file app.yaml App Engine locale in un servizio Cloud Run eseguendo questo comando:

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

  2. Esegui questo comando:

    gcloud beta app migrate-to-run
    

    Se il file app.yaml si trova in una directory diversa, includi il flag --appyaml:

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

    Sostituisci PATH con il percorso del file app.yaml.

Per saperne di più, consulta gcloud beta app migrate-to-run.

Utilizzare la configurazione di un deployment esistente

Per utilizzare la configurazione di un servizio App Engine di cui è stato eseguito il deployment anziché un file app.yaml locale, esegui questo comando.

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

Questo comando utilizza la configurazione del file app.yaml di un deployment esistente, che potrebbe essere obsoleta se hai apportato modifiche recenti al file app.yaml locale:

Sostituisci quanto segue:

  • SERVICE con il nome del tuo servizio App Engine. App Engine utilizza la configurazione del servizio esistente e ignora la configurazione del file app.yaml nella directory locale.
  • VERSION con l'ID versione del tuo servizio. App Engine utilizza la configurazione della versione esistente e ignora la configurazione del file app.yaml nella directory locale.

Per saperne di più, consulta gcloud beta app migrate-to-run.

Funzionalità non compatibili

Il comando di migrazione non va a buon fine se il file app.yaml contiene una delle seguenti configurazioni non supportate:

  • Servizi in entrata:

    inbound_services:
    - warmup
    
  • Pagine di errore personalizzate:

    error_handlers:
    - file: default_error.html
    - error_code: over_quota
      file: over_quota.html
    
  • Servizi in bundle per i runtime di seconda generazione:

    app_engine_apis: true
    
  • Variabili di ambiente di build:

    build_env_variables:
      Foo: Bar
    
  • Runtime di prima generazione:

    runtime: python27
    

Passaggi successivi