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 Approccio rapido al deployment da sorgente.
Dietro le quinte, questo comando utilizza
i buildpack di Google Cloud
e Cloud Build per creare automaticamente
immagini container dal codice sorgente senza dover installare Docker sulla
macchina o configurare i buildpack o Cloud Build. ovvero l'unico comando
descritti sopra fa ciò che altrimenti richiederebbe
gcloud builds submit
e ai
gcloud run deploy
tramite comandi SQL.
Tieni presente che i deployment delle origini utilizzano Artifact Registry per archiviare i container compilati. Se il tuo progetto non dispone già di un Artifact Registry
repository con il nome cloud-run-source-deploy
nella regione in cui ti trovi
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 non è presente un Dockerfile nell'origine la directory di codice, i buildpack di Google Cloud rilevano automaticamente la lingua utilizzano e recupera le dipendenze del codice per rendere un modello utilizzando un'immagine di base sicura gestita da Google.
Per impostazione predefinita, le correzioni di sicurezza vengono applicate solo quando viene eseguito il deployment del servizio. Quando attivi gli aggiornamenti automatici della sicurezza per un servizio, questo riceve le patch automaticamente senza tempi di inattività. Scopri di più su configurazione degli aggiornamenti della sicurezza.
Lingue supportate
Oltre alle origini con un Dockerfile, il deployment da sorgente supporta le seguenti lingue:
Ulteriori informazioni su versioni in linguaggio supportate dai buildpack di Google Cloud.
Limitazioni di questa funzionalità
- Il deployment dall'origine utilizza Artifact Registry, quindi questa funzionalità è disponibile solo in regioni supportate da Artifact Registry.
- Il deployment dal codice sorgente utilizzando
gcloud run deploy --source
è una funzionalità di comodità e non consente la personalizzazione completa della build. Per maggiori informazioni , creare l'immagine container con Cloud Build, ad esempio usandogcloud builds submit
e poi eseguire il deployment dell'immagine container utilizzando, ad esempio,gcloud run deploy --image
. - Il deployment dall'origine con buildpack di Google Cloud imposta la data dell'ultima modifica
sorgente dei file al 1° gennaio 1980. Questo è il comportamento predefinito dei buildpack
ed è progettato per supportare
build riproducibili. In base
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 tuo servizio dall'origine utilizzando Kotlin e altri linguaggi JVM come Java. Il linguaggio utilizzato deve essere conforme a le 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 in la pagina di 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.
Ruoli obbligatori
Per ottenere le autorizzazioni necessarie per eseguire il deployment da sorgente, chiedi all'amministratore di concederti i seguenti ruoli IAM nel progetto:
-
Sviluppatore origine Cloud Run (
roles/run.sourceDeveloper
) -
Utente account di servizio (
roles/iam.serviceAccountUser
)
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 tuo servizio Cloud Run si interfaccia con Le API Google Cloud, come le librerie client di Cloud, consultano guida alla configurazione dell'identità dei servizi. Per ulteriori informazioni sulla concessione dei ruoli, consulta autorizzazioni di deployment e gestire l'accesso.
Concedi il ruolo di account di servizio Cloud Build all'account di servizio predefinito Compute Engine
Abilita l'API Cloud Run Admin e l'API Cloud Build:
gcloud services enable run.googleapis.com \ cloudbuild.googleapis.com
Dopo aver abilitato l'API Cloud Run Admin, l'account di servizio predefinito di Compute Engine viene creato automaticamente.
- Affinché Cloud Build possa compilare le sorgenti, concedi il ruolo Account di servizio Cloud Build all'account di servizio predefinito di Compute Engine eseguendo quanto segue:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member=serviceAccount:PROJECT_NUMBER-compute@developer.gserviceaccount.com \ --role=roles/cloudbuild.builds.builder
Sostituisci
PROJECT_NUMBER
con il tuo Google Cloud il numero del progetto ePROJECT_ID
con il tuo Google Cloud dell'ID progetto. Per istruzioni dettagliate su come trovare l'ID e il numero del progetto, consulta la sezione Creazione di e gestione dei progetti.La propagazione del ruolo dell'account di servizio Cloud Build all'account di servizio predefinito di Compute Engine richiede un paio di minuti.
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, verrà utilizzato.
Crea ed esegui il deployment della tua applicazione:
gcloud run deploy SERVICE --source .
Sostituisci
SERVICE
con il nome che preferisci per il tuo completamente gestito di Google Cloud.Rispondi a eventuali richieste di installazione delle API richieste rispondendo
y
quando richiesto. Devi eseguire questa operazione una sola volta per un progetto. Rispondi ad altro specificando la piattaforma e la regione, se non hai configurato valori predefiniti come descritto nella pagina di configurazione.Attendi il completamento della compilazione e del deployment. Al termine, viene visualizzato un messaggio simile a questo è visualizzato:
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 senza controllo delle versioni nell'origine locale, Google consiglia di eseguire il deployment automatico quando viene eseguito il push delle modifiche al tuo repository repository Git. Per semplificare questa operazione, puoi connetterti e configurare il deployment nel tuo servizio Cloud Run. Collegando i tuoi repository GitHub a Cloud Run, puoi configurare le build ed eseguire il deployment dei repository senza scrivere Dockerfile o creare file.
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
- Visualizza i log di servizio
- Monitorare le prestazioni dei servizi
- Impostare limiti di memoria
- Impostare le variabili di ambiente
- Modifica la contemporaneità dei servizi
- Gestire il servizio
- Gestire le revisioni del servizio
Puoi automatizzare le build e i deployment dei tuoi servizi Cloud Run utilizzando gli trigger di Cloud Build: