Questo documento descrive le varie opzioni di deployment disponibili in Cloud Run e spiega le risorse Cloud Run disponibili.
Opzioni di deployment
Cloud Run offre più opzioni di deployment. Dopo il deployment, tutte le opzioni vengono eseguite come istanze container in sandbox sull'infrastruttura completamente gestita e altamente scalabile di Cloud Run.
Immagini container di cui è possibile eseguire il deployment
Puoi eseguire il deployment di qualsiasi immagine container conforme al contratto di runtime container di Cloud Run in un servizio Cloud Run, un job o un pool di worker.
Esegui il deployment dal codice sorgente
Per comodità, Cloud Run ti consente di creare ed eseguire il deployment del codice sorgente da un singolo comando. Per i dettagli, consulta Eseguire il deployment di servizi dal codice sorgente ed Eseguire il deployment di pool di worker dal codice sorgente.
Quando esegui il deployment dal codice sorgente, Cloud Build trasforma il codice in un'immagine container archiviata in Artifact Registry. Puoi eseguire il deployment del codice sorgente che include un Dockerfile o che utilizza uno dei
runtime di linguaggio supportati.
Funzioni
Puoi eseguire il deployment di funzioni a uso specifico che rispondono agli eventi generati dall'infrastruttura cloud e dai servizi cloud. Cloud Run attiva la funzione quando viene attivato un evento monitorato.
Il deployment di una funzione è un tipo speciale di deployment del codice sorgente, in cui devi fornire solo il codice della funzione. Puoi scrivere Cloud Run Functions utilizzando una serie di linguaggi di programmazione supportati.
Il deployment di una funzione crea un servizio Cloud Run service.
Deployment continuo del codice sorgente da git
Cloud Run ti aiuta a configurare il deployment continuo da Git.
Come per i deployment di origine, puoi eseguire il deployment del codice sorgente che include un
Dockerfile o scritto in uno dei runtime di linguaggio supportati.
Il deployment continuo da Git è disponibile per i servizi Cloud Run . Puoi configurarli manualmente in Cloud Build per Cloud Run job.
Servizi Cloud Run
I servizi sono una delle risorse principali di Cloud Run. Ogni servizio si trova in una regione Google Cloud specifica. Per fornire ridondanza e failover, Cloud Run replica automaticamente i servizi su più zone all'interno di una regione. Un dato Google Cloud progetto può eseguire molti servizi in regioni diverse.
Ogni servizio espone un endpoint univoco. Per impostazione predefinita, Cloud Run esegue automaticamente lo scale up per gestire le richieste in entrata. Se necessario, puoi modificare il comportamento di scalabilità in scalabilità manuale. Puoi eseguire il deployment di un servizio da un container, un repository o un codice sorgente.
Il seguente diagramma mostra il modello di risorse Cloud Run per i servizi:
Il diagramma mostra un Google Cloud progetto contenente tre servizi Cloud Run, Servizio A, Servizio B e Servizio C, ognuno dei quali ha diverse revisioni:
Il servizio A riceve più richieste, quindi Cloud Run ha avviato più istanze per gestire il carico. Ognuna di queste istanze esegue un solo container (il container dell'applicazione).
Il servizio B non ha richieste, quindi è inattivo e Cloud Run non esegue alcuna istanza.
Il servizio C ha richieste ed è stato scalato per gestire il carico creando più istanze. In questo caso, ognuna di queste istanze esegue un insieme di più container. In ogni insieme, solo il container di ingresso riceve la richiesta, ma gli altri container aiutano a soddisfarla.
Revisioni del servizio Cloud Run
Ogni deployment in un servizio crea una revisione. Una revisione è composta da una o più immagini container, insieme a impostazioni di configurazione come variabili di ambiente, limiti di memoria o valore di concorrenza delle richieste.
Non puoi modificare una revisione dopo la sua creazione. Ad esempio, quando esegui il deployment di un'immagine container in un nuovo servizio, Cloud Run crea la prima revisione. Se poi esegui il deployment di un'immagine container diversa nello stesso servizio, Cloud Run crea una seconda revisione. Se in seguito imposti una variabile di ambiente, Cloud Run crea una terza revisione. Nel tempo, Cloud Run rimuove le revisioni meno recenti e inutilizzate.
Cloud Run instrada automaticamente le richieste il prima possibile all'ultima revisione del servizio integra.
Istanze del servizio Cloud Run
Cloud Run esegue automaticamente lo scale up di ogni revisione del servizio che riceve richieste al numero di istanze necessarie per gestire tutte queste richieste. Tieni presente che le istanze possono ricevere molte richieste contemporaneamente. Con l'impostazione di concorrenza delle richieste, puoi impostare il numero massimo di richieste che possono essere inviate in parallelo a ogni istanza di una revisione.
Job Cloud Run
Ogni job si trova in una regione specifica Google Cloud ed è composto da una o più attività di job eseguite per eseguire uno o più container fino al completamento. Le attività di job sono indipendenti e possono essere eseguite in parallelo in una determinata esecuzione del job.
Esecuzioni di job Cloud Run
Quando viene eseguito un job, viene creata un'esecuzione del job in cui vengono avviate tutte le attività del job. Tutte le attività in un'esecuzione del job devono essere completate correttamente affinché l'esecuzione del job abbia esito positivo. Puoi impostare i timeout per le attività e specificare il numero di tentativi in caso di errore dell'attività.
Se un'attività supera il numero massimo di nuovi tentativi, Cloud Run la contrassegna come non riuscita e il job come non riuscito. Per impostazione predefinita, le attività vengono eseguite in parallelo fino a un massimo di 100, ma puoi specificare un massimo inferiore se una delle risorse di backup, ad esempio un database, lo richiede.
Attività di job Cloud Run
Ogni esecuzione del job esegue in parallelo una serie di attività, ognuna delle quali esegue un'istanza. Cloud Run tenta automaticamente di eseguire di nuovo le attività non riuscite, a seconda della configurazione del job per maxRetries.
Pool di worker Cloud Run
I pool di worker sono una risorsa Cloud Run progettata specificamente per i carichi di lavoro non di richiesta, come le code pull. Tieni presente che i pool di worker non hanno le seguenti funzionalità:- Nessun endpoint/URL
- Nessun requisito per il container di cui è stato eseguito il deployment per rimanere in ascolto delle richieste su una porta
- Nessuna scalabilità automatica
Analogamente a un servizio Cloud Run, il deployment o l'aggiornamento di un pool di worker crea una nuova revisione.
Le istanze del pool di worker possono essere scalate manualmente in base alle esigenze per scalare un numero sufficiente di istanze per i carichi di lavoro. Tuttavia, se necessario, puoi creare il tuo autoscaler. Un esempio è il gestore della scalabilità automatica Kafka, che gestisce la scalabilità per i carichi di lavoro in entrata dalla coda di messaggi Kafka.
Quando è connessa a una rete VPC, ogni istanza del pool di worker riceve un indirizzo IP sulla rete VPC ed è in grado di inviare e ricevere traffico da e verso questo VPC.