Esegui la migrazione di un'app dell'ambiente standard di App Engine a Cloud Run

ID regione

REGION_ID è un codice abbreviato assegnato da Google 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 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 la migrazione di un'app App Engine esistente che si connette a un'istanza Cloud SQL con un IP pubblico.

In generale, i passaggi di questa guida mostrano come puoi eseguire il deployment dello stesso codice sorgente dell'applicazione in Cloud Run e poi configurarlo in modo da utilizzare lo stesso utente del database Cloud SQL per connettere l'istanza e il database esistenti.

I passaggi descritti in questa guida non includono l'utilizzo di una connessione IP privato interna, in quanto richiede prima di modificare il codice dell'applicazione. Tuttavia, dopo aver eseguito il deployment dell'app in Cloud Run, puoi seguire la procedura descritta in Eseguire la connessione a Cloud SQL da Cloud Run per conoscere i requisiti e come utilizzare gli IP privati.

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.

Prima di iniziare

  1. Assicurati che Cloud Run soddisfi i requisiti della tua applicazione. Esamina il confronto tra App Engine e Cloud Run per determinare se le risorse Cloud Run, come CPU e memoria, soddisfano le tue esigenze.
  2. Questa guida presuppone che l'app funzioni senza errori.

  3. Devi disporre dell'accesso all'istanza Cloud SQL, incluso il nome utente e la password del database per connettere l'app. Cloud Run utilizza la crittografia e si connette tramite il proxy di autenticazione Cloud SQL utilizzando socket Unix o connettori Cloud SQL.

  4. Esamina le seguenti differenze di Cloud Run:

    • Cloud Run utilizza il termine Revision anziché Version per rappresentare ogni volta che esegui il deployment di modifiche a un servizio specifico. Eseguendo il deployment della tua app in un servizio 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 Google Cloud CLI o la console Google Cloud per configurare e gestire le impostazioni delle app. Cloud Run non richiede una configurazione basata su file, ma è supportata la configurazione YAML e puoi utilizzare lo strumento app2run per tradurre il file App Engine esistente per Cloud Run.

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

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

Esegui la migrazione dell'app a Cloud Run

In linea generale, la procedura di migrazione dell'app App Engine a Cloud Run è costituita dai seguenti passaggi:

  1. Abilita le API richieste
  2. Configura l'account di servizio Cloud Run
  3. Esegui il deployment dell'app in Cloud Run

Abilita le API richieste

Prima di poter eseguire il deployment dell'app in Cloud Run, devi prima abilitare le API Cloud Run e Artifact Registry.

Utilizza la console Google Cloud per attivare le API:

Vai ad API e servizi

Configura l'account di servizio Cloud Run

Puoi scegliere di creare un nuovo account di servizio o di continuare a utilizzare lo stesso account di servizio gestito dall'utente in Cloud Run che utilizzi per App Engine. Nell'account di servizio, devi assicurarti che siano configurati i seguenti ruoli di Identity and Access Management (IAM) o le autorizzazioni equivalenti:

Per eseguire il deployment in Cloud Run, devi disporre di uno dei seguenti elementi:

  • Proprietario
  • Editor
  • Entrambi i ruoli Amministratore di Cloud Run e Utente account di servizio
  • Autorizzazioni Cloud Run equivalenti

Per le connessioni IP pubbliche a Cloud SQL, devi disporre di uno dei seguenti elementi:

Esegui il deployment dell'app in Cloud Run

Non è necessario apportare modifiche al codice per eseguire il deployment dell'app App Engine su Cloud Run.

Nei passaggi seguenti, esegui il deployment dell'app in un nuovo servizio in Cloud Run e contemporaneamente configuri il servizio in modo che si connetta a Cloud SQL.

Come l'ambiente standard di App Engine, Cloud Run supporta i deployment basati su codice sorgente. Devi avere accesso al tuo repository del codice sorgente.

Cloud Run utilizza internamente i buildpack e Cloud Build per creare automaticamente le immagini container dal codice sorgente e non richiede di creare manualmente un contenitore o specificare un Dockerfile. Tuttavia, se è presente un Dockerfile, verrà utilizzato.

Il deployment di un servizio Cloud Run dall'origine utilizza Artifact Registry, pertanto questa funzionalità è disponibile solo nelle regioni supportate da Artifact Registry.

Per eseguire il deployment dello stesso codice sorgente di cui hai eseguito il deployment in precedenza in App Engine:

  1. Passa alla directory di origine in cui risiede il codice sorgente dell'applicazione.

      cd YOUR_APPENGINE_CODE_DIR
    
  2. Eseguire il deployment in Cloud Run.

    Per compilare il codice sorgente ed eseguire il deployment dell'applicazione, esegui il comando di deployment con il flag --source. Devi impostare i flag di configurazione per includere le stesse variabili di ambiente di connessione SQL definite nel file app.yaml della tua app App Engine:

      gcloud run deploy run-sql --source SOURCE \
        --allow-unauthenticated \
        --add-cloudsql-instances INSTANCE_CONNECTION_NAME\
        --set-env-vars INSTANCE_UNIX_SOCKET="/cloudsql/INSTANCE_CONNECTION_NAME" \
        --set-env-vars INSTANCE_CONNECTION_NAME="INSTANCE_CONNECTION_NAME" \
        --set-env-vars DB_NAME="DB_NAME" \
        --set-env-vars DB_USER="DB_USER" \
        --set-env-vars DB_PASS="DB_PASS"
    

    Sostituisci:

    • SOURCE con il percorso della directory di origine di App Engine
    • INSTANCE_CONNECTION_NAME con il nome della connessione dell'istanza Cloud SQL o un elenco di nomi di connessione separati da virgole. Puoi trovare il valore INSTANCE_CONNECTION_NAME eseguendo:
        gcloud instances describe INSTANCE_NAME
    
    • DB_NAME con il nome del database.
    • DB_USER con il nome utente del tuo database.
    • DB_PASS con la password del tuo utente del database.
  3. Inserisci un nome per il SERVIZIO quando richiesto.

  4. Rispondi a eventuali richieste di installazione delle API richieste rispondendo y quando richiesto. Dovrai eseguire questa operazione una sola volta per un progetto. Attendi il completamento della compilazione e del deployment. Al termine, viene visualizzato un messaggio simile al seguente:

    Service [my-app] revision [my-app-00000-xxx] has been deployed and is serving 100 percent of traffic. Service URL: https://sample.run.app
    

    Per scoprire di più sul deployment del codice sorgente in Cloud Run, consulta Eseguire il deployment dal codice sorgente.

Passaggi successivi