Un gruppo di endpoint di rete (NEG) specifica un gruppo di endpoint di backend per un bilanciatore del carico. Un NEG serverless è un backend che punta a un servizio Cloud Run, App Engine, funzioni Cloud Run o API Gateway.
Un NEG serverless può rappresentare uno dei seguenti elementi:
- Un servizio Cloud Run o un gruppo di servizi.
- Una funzione Cloud Run o un gruppo di funzioni.
- Un'app App Engine (standard o flessibile), un servizio specifico all'interno di un'app, una versione specifica di un'app o un gruppo di servizi.
- Un API Gateway che fornisce l'accesso ai tuoi servizi tramite un'API REST coerente in tutti i servizi, indipendentemente dall'implementazione del servizio. Questa funzionalità è in anteprima.
Bilanciatori del carico supportati
La tabella seguente elenca i prodotti serverless supportati da ogni bilanciatore del carico delle applicazioni. I NEG serverless non sono supportati dai bilanciatori del carico di rete proxy e dai bilanciatori del carico di rete passthrough.
Piattaforma serverless | Bilanciatori del carico delle applicazioni | ||||
---|---|---|---|---|---|
Interno regionale |
Interno tra regioni |
esterno globale |
Classico | Esterno regionale |
|
Cloud Run | |||||
App Engine | |||||
Funzioni Cloud Run |
Casi d'uso
Quando il bilanciatore del carico è attivato per le app serverless, puoi svolgere quanto segue:
- Configura l'app serverless in modo che venga pubblicata da un indirizzo IP IPv4 dedicato che non viene condiviso con altri servizi.
- Mappa un singolo URL a più funzioni o servizi serverless pubblicati nello stesso dominio. In questo documento, consulta la sezione Maschere URL.
- Condividere lo spazio URL con altre piattaforme di calcolo Google Cloud. Utilizzando più servizi di backend, un singolo bilanciatore del carico può inviare traffico a più tipi di backend. Il bilanciatore del carico seleziona il servizio di backend corretto in base all'host o al percorso dell'URL della richiesta.
- Riutilizza gli stessi certificati SSL e le stesse chiavi private che utilizzi per Compute Engine, Google Kubernetes Engine e Cloud Storage. Il riutilizzo degli stessi certificati elimina la necessità di gestire certificati separati per le app serverless.
Bilanciatore del carico delle applicazioni esterno globale e bilanciatore del carico delle applicazioni classico
La configurazione di un bilanciatore del carico delle applicazioni esterno globale o di un bilanciatore del carico delle applicazioni classico consente alle app serverless di integrarsi con i servizi cloud esistenti. Puoi svolgere le seguenti operazioni:
- Proteggi il tuo servizio con Google Cloud Armor, un prodotto di sicurezza WAF e di difesa DDoS perimetrale disponibile per tutti i servizi a cui si accede tramite un bilanciatore del carico delle applicazioni esterno. Esistono alcune limitazioni associate a questa funzionalità, in particolare per Cloud Run e App Engine.
- Consenti al tuo servizio di ottimizzare la distribuzione utilizzando Cloud CDN. Cloud CDN memorizza nella cache i contenuti vicino ai tuoi utenti. Cloud CDN offre funzionalità come l'annullamento della convalida della cache e gli URL firmati di Cloud CDN.
- Utilizza l'infrastruttura perimetrale di Google per terminare le connessioni HTTP(S) dell'utente più vicino all'utente, riducendo così la latenza.
Per scoprire come configurare un bilanciatore del carico con un backend di calcolo serverless, consulta la seguente documentazione:
- Configura un bilanciatore del carico delle applicazioni esterno globale con Cloud Run, App Engine o funzioni Cloud Run
- Configurare un bilanciatore del carico delle applicazioni classico con Cloud Run, App Engine o funzioni Cloud Run
L'integrazione di un bilanciatore del carico delle applicazioni esterno con API Gateway consente ai tuoi backend serverless di sfruttare tutte le funzionalità fornite da Cloud Load Balancing. Per ulteriori informazioni, consulta Bilanciatore del carico delle applicazioni esterno per API Gateway. Per configurare un bilanciatore del carico delle applicazioni esterno per instradare il traffico a un API Gateway, consulta Introduzione a un bilanciatore del carico delle applicazioni esterno per API Gateway. Questa funzionalità è in anteprima.
Bilanciatore del carico delle applicazioni esterno regionale
L'utilizzo di un bilanciatore del carico delle applicazioni esterno regionale consente di eseguire carichi di lavoro con requisiti normativi o di conformità sui backend Cloud Run. Ad esempio, se richiedi che le configurazioni di rete e il termine del traffico della tua applicazione si trovino in una regione specifica, un bilanciatore del carico delle applicazioni esterno regionale è spesso l'opzione preferita per rispettare i controlli di giurisdizione necessari.
Per scoprire come configurare un bilanciatore del carico delle applicazioni esterno regionale con un backend di calcolo serverless, consulta Configurare un bilanciatore del carico delle applicazioni esterno regionale con Cloud Run.
Bilanciatore del carico delle applicazioni interno regionale e bilanciatore del carico delle applicazioni interno tra regioni
Quando un bilanciatore del carico delle applicazioni interno è configurato con i backend Cloud Run, puoi eseguire le seguenti operazioni:
- Attiva le funzionalità di gestione del traffico avanzate come la fault injection, le riscritture delle intestazioni, i reindirizzamenti, la suddivisione del traffico e altro ancora per i tuoi servizi Cloud Run.
- Esegui la migrazione dei servizi precedenti da Compute Engine, GKE o on-premise a Cloud Run e sfrutta la suddivisione del traffico in base al peso per spostare gradualmente il traffico su Cloud Run senza tempi di inattività.
- Proteggi i tuoi servizi Cloud Run con i Controlli di servizio VPC.
- Stabilisci un unico punto di ingresso interno che applichi i criteri per i tuoi servizi eseguiti in Cloud Run, Compute Engine e GKE.
Per scoprire come configurare un bilanciatore del carico delle applicazioni interno regionale con un backend di calcolo serverless, consulta Configurare un bilanciatore del carico delle applicazioni interno regionale con Cloud Run.
Il resto di questa pagina spiega come utilizzare i NEG serverless con i bilanciatori del carico delle applicazioni. Per ulteriori informazioni su altri tipi di NEG, consulta la panoramica dei gruppi di endpoint di rete.
Tipi di endpoint
I NEG serverless non hanno endpoint di rete come porte o indirizzi IP. Possono puntare solo a un servizio Cloud Run, App Engine, API Gateway o funzioni Cloud Run esistente che si trova nella stessa regione del NEG.
Quando crei un NEG serverless, specifichi il nome di dominio completo
(FQDN) del servizio Cloud Run, App Engine,
API Gateway o funzioni Cloud Run. L'endpoint è di tipo
SERVERLESS
. Gli altri tipi di endpoint non sono supportati in un NEG serverless.
Un NEG serverless non può avere più di un endpoint. L'endpoint deve puntare a un'applicazione serverless o a una maschera URL. Il bilanciatore del carico funge da frontend per l'applicazione di calcolo serverless e proxy del traffico all'endpoint specificato. Tuttavia, se il servizio di backend contiene più NEG serverless in regioni diverse, il bilanciatore del carico invia il traffico al NEG nella regione più vicina per ridurre al minimo la latenza delle richieste.
Livello di rete
Per i bilanciatori del carico delle applicazioni esterni globali, puoi utilizzare un NEG serverless in un bilanciatore del carico che utilizza i livelli di servizio di rete Standard o Premium. Il livello Premium è obbligatorio solo se vuoi configurare NEG serverless in più regioni.
I bilanciatori del carico delle applicazioni esterni regionali sono sempre di livello Standard.
I bilanciatori del carico delle applicazioni interni tra regioni e i bilanciatori del carico delle applicazioni interni regionali sono sempre di livello Premium.
Componenti di bilanciamento del carico
Un bilanciatore del carico che utilizza un backend NEG serverless richiede una configurazione speciale solo per il servizio di backend. La configurazione frontend è la stessa di qualsiasi altro bilanciatore del carico Google Cloud basato su proxy. Inoltre, i bilanciatori del carico delle applicazioni interni richiedono una subnet solo proxy per eseguire i proxy Envoy per tuo conto.
I seguenti diagrammi mostrano un esempio di implementazione di NEG serverless.
Esterno globale
Questo diagramma mostra come un NEG serverless si inserisce in un'architettura di bilanciatore del carico delle applicazioni esterno globale.
Esterno regionale
Questo diagramma mostra come un NEG serverless si inserisce in un'architettura di bilanciatore del carico delle applicazioni esterno regionale.
Interno a livello di regione
Questo diagramma mostra come un NEG serverless si inserisce nel modello di bilanciatore del carico delle applicazioni interno regionale.
Tra regioni
Questo diagramma mostra come un gruppo di errori serverless si inserisce nel modello di bilanciatore del carico delle applicazioni interno tra regioni.
Componenti frontend
Non è richiesta alcuna configurazione frontend speciale per il bilanciamento del carico con i backend NEG serverless. Le regole di forwarding vengono utilizzate per instradare il traffico in base all'indirizzo IP, alla porta e al protocollo a un proxy di destinazione. Il proxy di destinazione termina quindi le connessioni dei client.
I bilanciatori del carico delle applicazioni utilizzano le mappe URL per configurare l'instradamento delle richieste in base all'URL ai servizi di backend appropriati.
Per ulteriori dettagli su ciascuno di questi componenti, consulta le sezioni sull'architettura delle panoramiche specifiche dei bilanciatori del carico:
- Bilanciatore del carico delle applicazioni esterno
- Bilanciatore del carico delle applicazioni interno
Servizio di backend
I servizi di backend forniscono informazioni di configurazione al bilanciatore del carico. I bilanciatori del carico utilizzano le informazioni di un servizio di backend per indirizzare il traffico in entrata a uno o più backend collegati. I NEG serverless possono essere utilizzati come backend per alcuni bilanciatori del carico.
A seconda del tipo di bilanciatore del carico, si applicano le seguenti limitazioni:
- Un servizio di backend globale utilizzato dai bilanciatori del carico delle applicazioni esterni globali può avere diversi NEG serverless collegati, ma solo un NEG serverless per regione.
- Un servizio di backend regionale utilizzato dai bilanciatori del carico delle applicazioni interni regionali e dai bilanciatori del carico delle applicazioni esterni regionali può avere un solo NEG serverless collegato.
- A un servizio di backend globale utilizzato dai bilanciatori del carico delle applicazioni interni tra regioni possono essere collegati solo servizi Cloud Run.
Ogni NEG serverless può puntare a uno dei seguenti elementi:
- Il FQDN di una singola funzione o di un singolo servizio
- Una maschera URL che rimanda a più funzioni o servizi pubblicati nello stesso dominio
Una maschera URL è un modello di schema URL che indica al backend NEG serverless come mappare la richiesta dell'utente al servizio corretto. Le maschere URL sono utili se utilizzi un dominio personalizzato per la tua applicazione serverless e hai più servizi pubblicati nello stesso dominio. Anziché creare un NEG serverless distinto per ogni funzione o servizio, puoi creare il NEG con una maschera URL generica per il dominio personalizzato. Per ulteriori informazioni e esempi, consulta la sezione Maschere URL.
Per ulteriori limitazioni relative all'aggiunta di un gruppo di elenchi di esclusione serverless come backend, consulta Limiti.
Rilevamento di outlier per i NEG serverless
Il rilevamento delle anomalie è una configurazione facoltativa che può essere attivata su un servizio di backend globale a cui sono collegati NEG serverless. L'analisi di rilevamento degli outlier è disponibile solo per un bilanciatore del carico delle applicazioni interno tra regioni, un bilanciatore del carico delle applicazioni esterno globale e non per un bilanciatore del carico delle applicazioni classico. L'analisi di rilevamento degli outlier identifica i NEG serverless non funzionanti in base ai relativi pattern di risposta HTTP e riduce la percentuale di errori inoltrando la maggior parte delle nuove richieste dai servizi non funzionanti a quelli funzionanti. Per scoprire come funziona l'algoritmo di rilevamento degli outlier e comprenderne i limiti, consulta il seguente esempio.
Supponiamo che esista un servizio di backend con due NEG serverless collegati, uno nella regione REGION_A
e un altro nella regione REGION_B
. Se il NEG serverless che funge da backend per un bilanciatore del carico delle applicazioni esterno globale nella regione REGION_A
non è in stato di risposta, il rilevamento degli outlier identifica il NEG serverless come non integro. In base all'analisi di rilevamento degli outlier, alcune delle nuove richieste vengono inviate al NEG serverless nella regione REGION_B
.
In base al tipo di errore del server rilevato, puoi utilizzare uno dei seguenti metodi di rilevamento degli outlier per attivare il rilevamento degli outlier:
- Errori 5xx consecutivi. Un codice di stato HTTP della serie
5xx
è considerato un errore. - Errori consecutivi del gateway. Solo i codici di stato HTTP
502
,503
e504
sono considerati errori.
Tieni presente che, anche dopo aver attivato il rilevamento degli outlier, è probabile che alcune richieste vengano inviate al servizio non funzionante e che quindi vengano restituiti errori 5XX ai client. Questo perché i risultati dell'algoritmo di rilevamento degli outlier (espulsione degli endpoint dal pool di bilanciamento del carico e reinserimento nel pool) vengono eseguiti in modo indipendente da ogni istanza proxy del bilanciatore del carico. Nella maggior parte dei casi, più di un'istanza proxy gestisce il traffico ricevuto da un servizio di backend. Pertanto, è possibile che un endpoint non integro venga rilevato ed espulso solo da alcuni proxy e, mentre ciò accade, altri proxy potrebbero continuare a inviare richieste allo stesso endpoint non integro.
Per ridurre ulteriormente i tassi di errore, puoi configurare parametri di rilevamento degli outlier più aggressivi. Ti consigliamo di configurare valori più elevati per le soglie di espulsione
(outlierDetection.baseEjectionTime
). Ad esempio, i nostri test mostrano che
l'impostazione di outlierDetection.baseEjectionTime
su 180 secondi con un
QPS sostenuto superiore a 100 comporta tassi di errore osservati inferiori al 5%. Per scoprire di più sull'API di rilevamento degli outlier, consulta outlierDetection
nella documentazione dell'API del servizio di backend globale.
I seguenti campi outlierDetection
non sono supportati quando al servizio di backend è associato un NEG serverless:
outlierDetection.enforcingSuccessRate
outlierDetection.successRateMinimumHosts
outlierDetection.successRateRequestVolume
outlierDetection.successRateStdevFactor
Per scoprire come configurare il rilevamento degli outlier, consulta Configurare un bilanciatore del carico delle applicazioni esterno globale con un backend serverless: attivare il rilevamento degli outlier.
Maschere URL
Un backend NEG serverless può puntare a un singolo servizio Cloud Run (o App Engine o funzioni Cloud Run, se applicabile) o a una maschera URL che punta a più servizi. Una maschera URL è un modello dello schema dell'URL. Il NEG serverless utilizza questo modello per mappare la richiesta al servizio appropriato.
Le maschere URL sono una funzionalità facoltativa che semplifica la configurazione dei NEG serverless quando l'applicazione serverless è composta da più servizi Cloud Run, funzioni Cloud Run o App Engine. I NEG serverless utilizzati con i bilanciatori del carico delle applicazioni interni possono utilizzare solo una maschera URL che rimandi ai servizi Cloud Run.
Le maschere URL sono utili se l'app serverless è mappata a un dominio personalizzato anziché all'indirizzo predefinito fornito da Google Cloud.
Con un dominio personalizzato come example.com
, puoi avere più servizi di cui è stato eseguito il deployment in sottodomini o percorsi diversi nello stesso dominio. In questi
casi, anziché creare un backend NEG serverless separato per ogni
servizio, puoi creare un singolo NEG serverless con una maschera URL generica per il
dominio personalizzato (ad esempio example.com/<service>
). Il NEG estrae il
nome del servizio dall'URL della richiesta.
La seguente illustrazione mostra un bilanciatore del carico delle applicazioni esterno con un singolo servizio di backend e un NEG serverless che utilizza una maschera URL per mappare le richieste degli utenti a diversi servizi.
Le maschere URL funzionano al meglio quando i servizi dell'applicazione utilizzano uno schema URL prevedibile. Il vantaggio dell'utilizzo di una maschera URL anziché di una mappa URL è che non
è necessario creare NEG serverless separati per i servizi login
e search
.
Inoltre, non è necessario modificare la configurazione del bilanciatore del carico ogni volta che aggiungi un nuovo servizio all'applicazione.
Limitazioni
- Un NEG serverless non può avere endpoint di rete come indirizzo IP o porta.
- I NEG serverless possono puntare solo ad applicazioni serverless situate nella stessa regione in cui viene creato il NEG.
- Per un bilanciatore del carico che utilizza un backend NEG serverless, il NEG serverless deve essere creato nello stesso progetto dei servizi di Cloud Run, App Engine, API Gateway o Cloud Functions di supporto a cui fa riferimento il NEG. Potresti notare che le richieste non vanno a buon fine se colleghi un servizio che non appartiene allo stesso progetto del NEG serverless.
- Un bilanciatore del carico configurato con un NEG serverless non può rilevare se l'app o il servizio serverless sottostante funziona come previsto. Ciò significa che anche se il servizio restituisce errori, il bilanciatore del carico continua a indirizzare il traffico verso di esso. Assicurati di testare attentamente le nuove versioni dei tuoi servizi prima di inoltrare il traffico degli utenti.
Limitazioni dei servizi di backend
Ai servizi di backend con un backend NEG serverless si applicano le seguenti limitazioni:
- Un servizio di backend globale utilizzato dai bilanciatori del carico delle applicazioni esterni globali può avere un solo NEG serverless per regione. Per combinare più NEG serverless in un singolo servizio di backend, tutti i NEG devono rappresentare implementazioni funzionalmente equivalenti in regioni diverse. Ad esempio, i NEG possono puntare allo stesso servizio Cloud Run, App Engine o Cloud Functions di Cloud Run di cui è stato eseguito il deployment in regioni diverse.
- Un servizio di backend globale utilizzato dai bilanciatori del carico delle applicazioni interni tra regioni può avere un solo servizio Cloud Run collegato.
- Un servizio di backend regionale può avere un solo NEG serverless collegato.
- Il riferimento ai servizi tra progetti in un deployment VPC condiviso è supportato con configurazioni che contengono un NEG serverless. Per utilizzare questa funzionalità, crea i componenti frontend del bilanciatore del carico (indirizzo IP, regola di forwarding, proxy di destinazione e mappa URL) in un progetto diverso da quello dei componenti di backend del bilanciatore del carico (servizio di backend e NEG serverless). Tieni presente che il servizio di backend, i NEG serverless associati e il servizio serverless di supporto (Cloud Run, App Engine, API Gateway o funzioni Cloud Run) devono sempre essere creati nello stesso progetto.
- L'impostazione del timeout del servizio di backend non si applica ai servizi di backend con backend NEG serverless. Il tentativo di modificare la proprietà
resource.timeoutSec
del servizio di backend genera il seguente errore:Timeout sec is not supported for a backend service with Serverless network endpoint groups
.
Per i servizi di backend con backend NEG serverless, il timeout predefinito è di 60 minuti. Questo timeout non è configurabile. Se la tua applicazione richiede connessioni di lunga durata, configura i client in modo che riprovino le richieste in caso di errore. - Anche tutte le NEG serverless combinate in un servizio di backend devono utilizzare lo stesso tipo di backend. Ciò significa che i NEG serverless Cloud Run possono essere combinati solo con altri NEG serverless Cloud Run e i NEG serverless App Engine possono essere combinati solo con altri NEG serverless App Engine.
- Non puoi combinare NEG serverless con altri tipi di NEG nello stesso servizio di backend. Ad esempio, non puoi eseguire il routing a un cluster GKE e a un servizio Cloud Run dallo stesso servizio di backend.
- Quando configuri i servizi di backend che indirizzano a NEG serverless, alcuni campi sono limitati:
- Non puoi specificare una modalità di bilanciamento. In altre parole, i valori
RATE
,UTILIZATION
eCONNECTION
non influiscono sulla distribuzione del traffico del bilanciatore del carico. - I controlli di integrità non sono supportati per i backend serverless. Pertanto, i servizi di backend che contengono backend NEG serverless non possono essere configurati con i controlli di integrità. Tuttavia, se vuoi, puoi attivare il rilevamento degli outlier per identificare i servizi serverless non funzionanti e instradare le nuove richieste a un servizio serverless funzionante.
- Non puoi specificare una modalità di bilanciamento. In altre parole, i valori
- Non puoi utilizzare il comando
gcloud compute backend-services edit
per modificare un servizio di backend con un backend NEG serverless. Come soluzione alternativa, utilizza il comandogcloud compute backend-services update
.
Si applicano limitazioni aggiuntive a seconda del tipo di bilanciatore del carico e del backend serverless.
Limitazioni dei bilanciatori del carico delle applicazioni interni regionali e dei bilanciatori del carico delle applicazioni esterni regionali
- I NEG serverless utilizzati con bilanciatori del carico delle applicazioni interni regionali o bilanciatori del carico delle applicazioni esterni regionali possono puntare solo ai servizi Cloud Run.
- Per i progetti che utilizzano NEG serverless, il limite di query al secondo (QPS) è 5000 QPS per progetto per il traffico inviato a qualsiasi NEG serverless configurato con bilanciatori del carico delle applicazioni esterni regionali o bilanciatori del carico delle applicazioni interni regionali. Questo limite viene aggregato in tutti i bilanciatori del carico delle applicazioni esterni regionali e in tutti i bilanciatori del carico delle applicazioni interni regionali del progetto. Non si tratta di un limite per bilanciatore del carico.
Limitazioni dei bilanciatori del carico delle applicazioni interni tra regioni
- I NEG serverless utilizzati con i bilanciatori del carico delle applicazioni interni tra regioni possono puntare solo ai servizi Cloud Run.
Limitazioni dei bilanciatori del carico delle applicazioni esterni globali
Questa sezione elenca le limitazioni che riscontrerai durante la configurazione di NEG serverless con bilanciatori del carico delle applicazioni esterni globali.
Limitazioni di App Engine
- I bilanciatori del carico delle applicazioni esterni globali con backend sia dell'ambiente flessibile di App Engine sia dell'ambiente standard di App Engine non supportano i riferimenti ai servizi tra progetti.
Limitazioni di Cloud Run
- Un bilanciatore del carico delle applicazioni esterno con NEG serverless non supporta la pubblicazione Knative.
- I bilanciatori del carico delle applicazioni esterni non supportano l'autenticazione delle richieste degli utenti finali ai servizi Cloud Run. Tuttavia, puoi utilizzare IAP per autenticare gli utenti all'interno della tua organizzazione. Se vuoi attivare IAP, tieni presente che IAP e Cloud CDN non sono compatibili tra loro. Non possono essere attivati nello stesso servizio di backend.
Limitazioni di App Engine
- Il bilanciamento del carico su più regioni non è supportato in App Engine. Questo accade perché App Engine richiede 1 regione per progetto.
- Nel percorso della richiesta è consentito un solo criterio IAP. Ad esempio, se hai già impostato un criterio IAP nel servizio di backend, non devi impostare un altro criterio IAP nell'app App Engine.
- Ti consigliamo di utilizzare i controlli di immissione in modo che la tua app riceva solo le richieste inviate dal bilanciatore del carico (e dalla VPC, se la utilizzi). In caso contrario, gli utenti possono utilizzare l'URL App Engine della tua app per bypassare il bilanciatore del carico, i criteri di sicurezza di Google Cloud Armor, i certificati SSL e le chiavi private trasmessi tramite il bilanciatore del carico.
Limitazioni di API Gateway
Per ulteriori informazioni, consulta Limitazioni relative a NEG e API Gateway serverless.
Limitazioni delle funzionalità di gestione del traffico
- Le funzionalità di gestione avanzata del traffico come il criterio di località del bilanciamento del carico, l'affinità sessione e il rilevamento di outlier non sono supportate con i backend NEG serverless.
- La specifica di un'affinità di sessione su un servizio di backend con un backend NEG serverless non funzionerà. Come soluzione alternativa per Cloud Run, utilizza la funzionalità specifica di affinità sessione.
Prezzi
Per informazioni sui prezzi dei bilanciatori del carico con NEG serverless, consulta Tutti i prezzi di networking: Cloud Load Balancing.
Passaggi successivi
- Configura un bilanciatore del carico delle applicazioni esterno globale con Cloud Run, App Engine o funzioni Cloud Run
- Configurare un bilanciatore del carico delle applicazioni classico con Cloud Run, App Engine o funzioni Cloud Run
- Configura un bilanciatore del carico delle applicazioni esterno regionale con un backend Cloud Run
- Configura un bilanciatore del carico delle applicazioni interno regionale con un backend Cloud Run
- Configura un bilanciatore del carico delle applicazioni interno tra regioni con Cloud Run