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 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 eseguire il deployment dello stesso codice sorgente dell'applicazione in Cloud Run e poi configurarlo per utilizzare lo stesso utente del database Cloud SQL per connettere l'istanza e il database esistenti.
I passaggi di questa guida non includono l'utilizzo di una connessione IP privato interno perché richiede prima di modificare il codice dell'applicazione. Tuttavia, dopo aver eseguito il deployment dell'app su Cloud Run, puoi utilizzare i passaggi descritti in Connettersi a Cloud SQL da Cloud Run per scoprire i requisiti e come utilizzare gli IP privati.
Per saperne 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
Assicurati che Cloud Run soddisfi i requisiti della tua applicazione. Esamina il confronto tra App Engine e Cloud Run per determinare se le risorse di Cloud Run come CPU e memoria soddisfano le tue esigenze.
Devi disporre dell'accesso all'istanza Cloud SQL, inclusi 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 i socket Unix o i connettori Cloud SQL.
Abilita l'API Cloud Run Admin e l'API Artifact Registry.
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 Google Cloud CLI o la console Google Cloud per configurare e gestire le impostazioni delle tue app. Cloud Run non richiede la configurazione basata su file, tuttavia è 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 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).
Cloud Run non supporta i servizi integrati legacy di App Engine.
Questa guida presuppone che l'applicazione App Engine venga eseguita senza errori.
Ruoli obbligatori
Puoi scegliere di creare un nuovo account di servizio o continuare a utilizzare lo stesso service account 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 creare e implementare dal codice sorgente, chiedi all'amministratore di concederti i seguenti ruoli IAM:
- Cloud Run Source Developer (
roles/run.sourceDeveloper
) sul tuo progetto - Consumer API Service Usage (
roles/serviceusage.serviceUsageConsumer
) sul tuo progetto - Utente account di servizio (
roles/iam.serviceAccountUser
) sull'identità del servizio Cloud Run
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 predefinito di Compute Engine sul 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,
vedi Creazione
e gestione dei progetti.
La concessione del ruolo Cloud Run Builder all'account di servizio Compute Engine predefinito 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 ulteriori informazioni sulla concessione dei ruoli, consulta Autorizzazioni di deployment e Gestire l'accesso.
Per le connessioni IP pubbliche a Cloud SQL, devi disporre di uno dei seguenti ruoli:
- Client Cloud SQL (preferito)
- Amministratore Cloud SQL
- Autorizzazioni Cloud SQL equivalenti
Esegui la migrazione dell'app a 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 per la connessione a Cloud SQL.
Come l'ambiente standard di App Engine, Cloud Run supporta i deployment basati sull'origine. Devi avere accesso al repository del codice sorgente.
Cloud Run utilizza internamente i buildpack e Cloud Build per creare automaticamente immagini container dal codice sorgente e non richiede di creare manualmente un container 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:
Passa alla directory di origine in cui si trova il codice sorgente dell'applicazione.
cd YOUR_APPENGINE_CODE_DIR
Eseguire il deployment in Cloud Run.
Per creare il codice sorgente ed eseguire il deployment dell'applicazione, esegui il comando deploy con il flag
--source
. Devi impostare i flag di configurazione in modo da includere le stesse variabili di ambiente di connessione SQL definite nel fileapp.yaml
dell'app App Engine:gcloud run deploy run-sql --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 INSTANCE_CONNECTION_NAME con il nome della connessione istanza della tua istanza Cloud SQL o con un elenco di nomi di connessione separati da virgole. Puoi trovare
INSTANCE_CONNECTION_NAME
eseguendo:gcloud instances describe INSTANCE_NAME
- DB_NAME con il nome del tuo database.
- DB_USER con il nome utente del tuo database.
- DB_PASS con la password dell'utente del database.
Quando richiesto, inserisci un nome per il SERVIZIO.
Rispondi a eventuali richieste di installazione delle API necessarie rispondendo
y
quando richiesto. Devi farlo solo una volta per progetto. Attendi il completamento della build e del deployment. Al termine, viene visualizzato un messaggio simile a questo: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 Deployment dal codice sorgente.
Passaggi successivi
- Consulta le best practice di Cloud SQL per connettere l'istanza Cloud SQL da Cloud Run.
- Scopri come archiviare le dipendenze per il tuo servizio che richiede chiavi API, password o altre informazioni sensibili utilizzando un secret manager.
- Scopri come gestire i servizi Cloud Run.
- Consulta il contratto di runtime del container di Cloud Run per comprendere i requisiti e i comportamenti dei container in Cloud Run.