Questa pagina descrive come eseguire il deployment di nuovi servizi e nuove revisioni in Cloud Run direttamente dal codice sorgente utilizzando un singolo comando dell'interfaccia a riga di comando gcloud, gcloud run deploy
, con il flag --source
. Per un example walkthrough di deployment di un servizio Hello World, consulta Approfondimenti sul deployment da sorgente.
Dietro le quinte, questo comando utilizza i buildpack di Google Cloud e Cloud Build per creare automaticamente le immagini container dal codice sorgente senza dover installare Docker sulla macchina o configurare i buildpack o Cloud Build. In altre parole, il singolo comando
descritto sopra esegue l'operazione che altrimenti richiederebbe i comandi
gcloud builds submit
e
gcloud run deploy
.
Tieni presente che i deployment delle origini utilizzano Artifact Registry per archiviare i container compilati. Se il tuo progetto non ha già un repository Artifact Registry con il nome cloud-run-source-deploy
nella regione in cui esegui il deployment, questa funzionalità crea automaticamente un repository Artifact Registry con il nome cloud-run-source-deploy
.
Se nella directory del codice sorgente è presente un Dockerfile, il codice sorgente caricato viene compilato utilizzando quel Dockerfile. Se nella directory del codice sorgente non è presente alcun Dockerfile, i buildpack di Google Cloud rilevano automaticamente il linguaggio che stai utilizzando e recuperano le dipendenze del codice per creare un'immagine container pronta per la produzione utilizzando un'immagine di base sicura gestita da Google.
Per impostazione predefinita, le correzioni di sicurezza vengono applicate solo quando il servizio viene disegnato. Quando attivi gli aggiornamenti automatici della sicurezza per un servizio, questo riceve le patch automaticamente senza tempi di inattività. Scopri di più sulla configurazione degli aggiornamenti della sicurezza.
Lingue supportate
Oltre alle origini con un Dockerfile, il deployment da sorgente supporta le seguenti lingue:
Scopri di più sulle versioni in lingue supportate.
Limitazioni di questa funzionalità
- Il deployment dall'origine utilizza Artifact Registry e Cloud Build, pertanto questa funzionalità è disponibile solo nelle regioni supportate da Artifact Registry e Cloud Build.
- Il deployment dal codice sorgente utilizzando
gcloud run deploy --source
è una funzionalità di comodità e non consente la personalizzazione completa della build. Per un maggiore controllo, crea l'immagine container utilizzando Cloud Build, ad esempio congcloud builds submit
, quindi esegui il deployment dell'immagine container utilizzando, ad esempio,gcloud run deploy --image
. - Il deployment da sorgente con i buildpack di Google Cloud imposta la data dell'ultima modifica
dei file di origine su 1° gennaio 1980. Questo è il comportamento predefinito dei buildpack ed è progettato per supportare le build riproducibili. A seconda del framework linguistico, questo può influire sulla memorizzazione nella cache lato browser dei file statici. Se
la tua applicazione è interessata da questo problema, Google consiglia di disattivare le intestazioni HTTP
etag
eLast-Modified
nell'applicazione. - Il deployment da sorgente con i buildpack di Google Cloud utilizza sempre
gcr.io/buildpacks/builder:latest
. Se la lingua o la configurazione del sistema operativo che preferisci non è disponibile inlatest
, utilizza un compilatore specifico per creare un'immagine dell'applicazione utilizzando il compilatore che preferisci. Puoi eseguire il deployment del servizio dal codice sorgente utilizzando Kotlin e altri linguaggi JVM come Java. Il linguaggio che utilizzi deve essere conforme alle seguenti regole:
- Puoi creare l'applicazione utilizzando Maven o Gradle.
- Il file di compilazione contiene tutti i plug-in necessari per le classi di prodotto.
Prima di iniziare
- Assicurati di aver configurato un nuovo progetto per Cloud Run come descritto nella pagina Configurazione.
Se il tuo progetto è soggetto a un criterio dell'organizzazione che limita le invocazioni non autenticate, dovrai accedere al servizio di cui è stato eseguito il deployment come descritto in Testare i servizi privati.
Abilita l'API Cloud Run Admin e l'API Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Dopo aver attivato l'API Cloud Run Admin, l'account di servizio predefinito di Compute Engine viene creato automaticamente.
Ruoli obbligatori
Tu o il tuo amministratore dovete concedere all'account di deployment e all'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:
- Cloud Run Source Developer (
roles/run.sourceDeveloper
) nel tuo progetto - Utente account di servizio (
roles/iam.serviceAccountUser
) nell'identità servizio Cloud Run
Fai clic per visualizzare i ruoli richiesti per l'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 compilare il codice sorgente e la risorsa Cloud Run, a meno che tu non sostituisca questo comportamento. Affinché Cloud Build possa compilare le sorgenti, chiedi all'amministratore di concedere il ruolo Cloud Run Builder (roles/run.builder
) all'account di servizio predefinito di Compute Engine 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 Google Cloud
del progetto e PROJECT_ID
con l'ID Google Cloud
del progetto. Per istruzioni dettagliate su come trovare l'ID progetto e il numero del progetto, consulta Creazione e gestione dei progetti.
La propagazione del ruolo del compilatore Cloud Run all'account di servizio predefinito di Compute Engine richiede un paio di minuti.
Per un elenco dei ruoli e delle autorizzazioni IAM associati a Cloud Run, consulta Ruoli IAM di Cloud Run e Autorizzazioni IAM di Cloud Run. Se il servizio Cloud Run interagisce conGoogle Cloud API, come le librerie client di Cloud, consulta la guida alla configurazione dell'identità di servizio. Per ulteriori informazioni sulla concessione dei ruoli, consulta le autorizzazioni di deployment e gestisci l'accesso.
Deployment in corso…
Per eseguire il deployment dal codice sorgente:
Passa alla directory di origine. Tieni presente che la directory di origine non richiede un Dockerfile, ma se è presente un Dockerfile, verrà utilizzato.
Crea ed esegui il deployment dell'applicazione:
gcloud run deploy SERVICE --source .
Sostituisci
SERVICE
con il nome che vuoi assegnare al servizio.Se il codice sorgente utilizza uno dei runtime dei linguaggi supportati e vuoi configurare aggiornamenti automatici dell'immagine di base per il tuo runtime, specifica il flag
--automatic-updates
e il--base-image
con l'immagine di base per il tuo servizio, ad esempionodejs22
.Rispondi a eventuali richieste di installazione delle API richieste rispondendo
y
quando richiesto. Dovrai eseguire questa operazione una sola volta per un progetto. Rispondi alle altre richieste specificando la piattaforma e la regione, se non hai impostato i valori predefiniti come descritto nella pagina di configurazione.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://my-app-texampleq-uc.a.run.app
Al momento del deployment, tieni presente che questa revisione del servizio gestisce il 100% del traffico.
Automatizzare la compilazione dal codice sorgente
Come best practice per evitare modifiche non versionate nel codice sorgente locale, Google consiglia di eseguire il deployment automaticamente quando le modifiche vengono inviate al repository Git. Per semplificare, puoi collegare e configurare il deployment continuo nel tuo servizio Cloud Run. Se colleghi i tuoi repository GitHub a Cloud Run, puoi configurare le build ed eseguire il deployment dei tuoi repository senza scrivere file Dockerfile o file di build.
Per configurare le build automatiche, imposta l'automazione come descritto nella pagina delle build continue, assicurandoti di scegliere l'opzione per la compilazione del codice sorgente con Buildpack.
Passaggi successivi
Dopo aver eseguito il deployment di un nuovo servizio, puoi:
- Implementazioni graduali, revisioni del rollback, migrazione del traffico
- Visualizzare i log di servizio
- Monitorare il rendimento dei servizi
- Impostare i limiti di memoria
- Imposta le variabili di ambiente
- Modificare la concorrenza del servizio
- Gestire il servizio
- Gestire le revisioni del servizio
Scopri di più sulle configurazioni di deployment dell'origine:
- Aggiornamenti automatici delle immagini di base
- Variabili di ambiente di build
- Service account di Build
- Creare pool di worker
Puoi automatizzare le build e i deployment dei tuoi servizi Cloud Run utilizzando gli trigger di Cloud Build: