Puoi abilitare il servizio, la funzione, il job o il pool di worker Cloud Run per inviare traffico a una rete VPC
I servizi e i job Cloud Run non supportano l'ingresso VPC diretto. Per configurare l'accesso VPC diretto solo per i pool di worker, consulta Ingresso dei pool di worker Cloud Run.
Prima di iniziare
Se non hai ancora una rete VPC nel tuo progetto, creane una.
Se utilizzi il VPC condiviso con servizi o job Cloud Run, consulta Connessione a una rete VPC condivisa.
Esamina le seguenti sezioni di configurazione dell'indirizzo IP:
Allocazione degli indirizzi IP per indicazioni sull'allocazione degli indirizzi IP dalla subnet.
Strategie di esaurimento degli indirizzi IP per l'utilizzo di intervalli di indirizzi IP alternativi.
Limitazioni
I seguenti limiti si applicano a servizi e job Cloud Run , funzioni, job e pool di worker:
- Potresti riscontrare ritardi di un minuto o più nella creazione della connessione all'avvio dell'istanza quando utilizzi l'uscita VPC diretto. Ti consigliamo di configurare un probe di avvio HTTP che testa una connessione a una destinazione in uscita utilizzata dall'applicazione prima che l'applicazione accetti le richieste. Questo test di connettività in uscita deve implementare i tentativi o la sonda di avvio deve essere impostata con configurazioni di periodo e soglia appropriate per fungere da tentativo.
- I job Cloud Run che vengono eseguiti per più di un'ora potrebbero subire
interruzioni della connessione. Questi possono verificarsi durante
eventi di manutenzione
che migrano il job da una macchina all'altra. Il contenitore riceve un
segnale
SIGTSTP10 secondi prima dell'evento e un segnaleSIGCONTdopo l'evento. Dopo che il contenitore riceve il segnaleSIGCONT, riprova a effettuare la connessione. - Con Cloud NAT, potresti riscontrare ritardi di avvio a freddo di 30 secondi o più all'avvio dell'istanza quando utilizzi l'uscita VPC diretto. Per migliorare le prestazioni di avvio, ti consigliamo di utilizzare i connettori di accesso VPC serverless con Cloud NAT.
- Cloud Run supporta una velocità effettiva fino a 1 Gbps per singola istanza. Il superamento di questo importo comporta la limitazione delle prestazioni.
Una quota di utilizzo di Cloud Run limita il numero massimo di istanze che puoi configurare per utilizzare il traffico in uscita VPC diretto. Il numero massimo viene configurato per revisione o esecuzione del job di Cloud Run. Per aumentare i limiti predefiniti, consulta Come aumentare le quote.
- I servizi e i job Cloud Run , potrebbero subire interruzioni della connessione durante gli eventi di manutenzione dell'infrastruttura di rete. Ti consigliamo di utilizzare librerie client in grado di gestire i ripristini occasionali della connessione.
- Network Intelligence Center supporta solo Connectivity Tests e Flow Analyzer per gli intervalli di subnet IPv4 e IPv6.
- I servizi e i job Cloud Run non supportano l'ingresso VPC diretto.
I seguenti elementi non sono supportati dal traffico VPC diretto in uscita:
- I log di flusso VPC non forniscono il nome della revisione Cloud Run.
- Logging delle regole firewall VPC
- Mirroring pacchetto
- Tag di rete o identità di servizio nelle regole firewall in entrata.
- Le regole firewall non possono utilizzare i tag Resource Manager collegati ai carichi di lavoro Cloud Run.
- Ispezione del traffico in uscita con Cloud Next Generation Firewall Enterprise, ad esempio servizio di rilevamento e prevenzione delle intrusioni, servizio di filtro URL e ispezione TLS.
Allocazione degli indirizzi IP
Per inserire il servizio o il job Cloud Run , il servizio, il job o il pool di worker in una rete VPC, specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete. Cloud Run alloca indirizzi IP dalla tua subnet.
Gli indirizzi IP sono temporanei, quindi non creare policy basate su singoli IP. Se devi creare una policy basata sugli IP, ad esempio nelle regole firewall, devi utilizzare l'intervallo di indirizzi IP dell'intera subnet.
Per modificare la rete o la subnet utilizzata dal tuo servizio , dal tuo job , esegui il deployment di una nuova revisione o esegui una nuova attività di job che utilizza i nuovi valori di rete e subnet.
Scale up e fare lo scale down
Per fare lo scale up più rapidamente durante un picco di traffico, Cloud Run riserva gli indirizzi IP in blocchi di 16 (subnet mask 28) alla volta.
Scopri quali indirizzi IP sono stati allocati da Cloud Run.
Per assicurarti di avere a disposizione un numero sufficiente di indirizzi IPv4 da utilizzare in Cloud Run, l'intervallo di indirizzi IPv4 della subnet deve essere /26 o superiore.
Per un'allocazione IP efficiente e una gestione semplice, posiziona più risorse nella stessa subnet. Se lo spazio di indirizzi IPv4 è limitato, consulta Intervalli IPv4 supportati per altre opzioni.
Per eliminare la subnet, devi prima eliminare o rifare il deployment dei servizi o dei jobCloud Run per interrompere l'utilizzo della subnet, quindi attendere 1-2 ore.
Consumo di indirizzi IP per i servizi
In stato stazionario, Cloud Run utilizza un numero di indirizzi IP doppio (2X) rispetto al numero di istanze. Quando una revisione viene ridimensionata, Cloud Run ne conserva gli indirizzi IP per un massimo di 20 minuti. In totale, riserva almeno il doppio del numero di indirizzi IP, più un buffer per tenere conto degli aggiornamenti delle revisioni.
Ad esempio, se esegui l'upgrade delle revisioni in modo che revision 1 venga scalato da 100 istanze a zero, mentre revision 2 viene scalato da zero a 100, Cloud Run conserva gli indirizzi IP revision 1 fino a 20 minuti dopo lo scale down. Durante la finestra di conservazione di 20 minuti, devi
riservare almeno 400 indirizzi IP ((100 + 100) * 2).
Consumo di IP per i job
Per i job Cloud Run, ogni attività utilizza un indirizzo IP per la
durata dell'esecuzione più 7 minuti dopo il completamento. Assicurati che la
subnet sia abbastanza grande da ospitare tutte le esecuzioni simultanee delle attività del job, con
una subnet di prenotazione minima /26 richiesta.
Ad esempio:
- Un job a singola attività che viene eseguito quotidianamente e viene sempre completato almeno 7 minuti prima dell'esecuzione successiva consuma un massimo di 1 indirizzo IP nella subnet.
- Un job di 10 attività eseguito ogni 10 minuti, con ogni attività eseguita per 15 minuti,
consuma 1 indirizzo IP per 22 minuti per attività (3 esecuzioni consumano indirizzi IP
contemporaneamente), come mostrato nell'esempio seguente. Pertanto, il job utilizza
30 indirizzi IP in stato stazionario.
- Un job a singola attività che richiede 1 minuto per l'esecuzione e viene eseguito 100 volte al minuto richiede circa 800 indirizzi IP, a seconda dell'ora esatta di esecuzione.
Intervalli IPv4 supportati
Cloud Run supporta i seguenti intervalli IPv4 per la tua subnet:
Configurare le autorizzazioni IAM
Assicurati che Cloud Run abbia accesso alla rete VPC utilizzando uno dei seguenti metodi:
Ruolo Service Agent Cloud Run: per impostazione predefinita, il service agent Cloud Run dispone del ruolo Service Agent Cloud Run (
roles/run.serviceAgent) che contiene le autorizzazioni necessarie.Autorizzazioni personalizzate: per un controllo più granulare, concedi al service agent Cloud Run le seguenti autorizzazioni aggiuntive sul progetto:
compute.networks.getcompute.subnetworks.getcompute.subnetworks.usesul progetto o sulla subnet specificacompute.addresses.getcompute.addresses.listcompute.addresses.create(obbligatorio solo per le subnet a doppio stack con IPv6 esterno)compute.addresses.delete(obbligatorio solo per le subnet a doppio stack con IPv6 esterno)compute.addresses.createInternalcompute.addresses.deleteInternalcompute.regionOperations.get
Ruolo Utente di rete Compute: se non utilizzi il ruolo Service Agent Cloud Run predefinito o le autorizzazioni personalizzate, concedi il ruolo Utente di rete Compute (
roles/compute.networkUser) al account di servizio Service Agent Cloud Run. Le subnet con IPv6 esterno richiedono anche il ruolo Compute Public IP Admin (roles/compute.publicIpAdmin).Ad esempio, per concedere il ruolo Utente di rete Compute, esegui questo comando:
gcloud projects add-iam-policy-binding PROJECT_ID \ --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.s3ns-system.iam.gserviceaccount.com" \ --role "roles/compute.networkUser"
Sostituisci quanto segue:
- PROJECT_ID: l'ID progetto.
- PROJECT_NUMBER: il numero del progetto in cui esegui il deployment della risorsa Cloud Run.
Connetti le risorse Cloud Run a una rete VPC
A seconda della risorsa Cloud Run che hai, consulta le istruzioni in una delle seguenti sezioni:
Connetti un servizio a una rete VPC
Il traffico in uscita VPC diretto consente al servizio Cloud Run di inviare traffico a una rete VPC senza un connettore di accesso VPC serverless. I costi di rete vengono scalati a zero proprio come il servizio stesso. Puoi anche aggiungere tag di rete direttamente alle revisioni del servizio Cloud Run per una sicurezza di rete più granulare, ad esempio applicando regole firewall VPC.
Puoi configurare l'uscita VPC diretta con un servizio utilizzando la consoleCloud de Confiance , Google Cloud CLI, YAML o Terraform.
Console
Nella console Cloud de Confiance by S3NS , vai a Cloud Run:
Fai clic su Crea servizio se stai configurando un nuovo servizio di cui stai eseguendo il deployment. Se stai configurando ed eseguendo il deployment di un servizio esistente, fai clic sul servizio.
Se stai configurando un nuovo servizio, compila la pagina delle impostazioni iniziali del servizio come necessario, poi fai clic su Contenitori, networking, sicurezza per espandere la pagina di configurazione del servizio.
Fai clic sulla scheda Networking.
Fai clic su Connettiti a un VPC per il traffico in uscita.
Fai clic su Invia il traffico direttamente a un VPC.
Nel campo Rete, seleziona la rete VPC a cui vuoi inviare il traffico.
Nel campo Subnet, seleziona la subnet da cui il servizio riceve gli indirizzi IP. Puoi eseguire il deployment di più servizi nella stessa subnet.
(Facoltativo) Inserisci i nomi dei tag di rete che vuoi associare al tuo servizio o ai tuoi servizi. I tag di rete vengono specificati a livello di revisione. Ogni revisione del servizio può avere tag di rete diversi, ad esempio
network-tag-2.Per Routing del traffico, seleziona una delle seguenti opzioni:
- Instrada al VPC solo richieste a IP privati per inviare solo traffico agli indirizzi interni tramite la rete VPC.
- Instrada al VPC tutto il traffico per inviare tutto il traffico in uscita attraverso la rete VPC.
Fai clic su Crea per un nuovo servizio. Fai clic su Visualizza differenze e fai di nuovo il deployment, quindi su Esegui il deployment delle modifiche per un servizio esistente.
Per verificare che il servizio si trovi sulla rete VPC, fai clic sul servizio, quindi sulla scheda Networking. La rete e la subnet sono elencate nella scheda VPC.
Ora puoi inviare richieste dal tuo servizio Cloud Run a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
gcloud
Servizio
Per eseguire il deployment di un servizio Cloud Run senza un connettore da Google Cloud CLI:
Aggiorna i componenti di
gcloudall'ultima versione:gcloud components update
Assicurati che l'API Compute Engine sia abilitata per il tuo progetto:
gcloud services enable compute.googleapis.com
Esegui il deployment del servizio Cloud Run con questo comando:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Sostituisci:
- SERVICE_NAME con il nome del tuo servizio Cloud Run.
IMAGE_URLus-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG- NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- SUBNET con il nome della subnet. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet.
- (Facoltativo) NETWORK_TAG_NAMES con i nomi separati da virgole
dei tag di rete
che vuoi associare a un servizio. Per i servizi, i tag di rete vengono specificati a livello di revisione. Ogni revisione del servizio può avere
tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- REGION con una regione per il tuo servizio.
Per verificare che il servizio si trovi sulla rete VPC, esegui il seguente comando:
gcloud run services describe SERVICE_NAME \ --region=REGION
Sostituisci:
SERVICE_NAMEcon il nome del tuo servizio.REGIONcon la regione del servizio che hai specificato nel passaggio precedente.
L'output dovrebbe contenere il nome della rete, della subnet e dell'impostazione di uscita, ad esempio:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
Ora puoi inviare richieste dal tuo servizio Cloud Run a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
Funzione
Per eseguire il deployment di una funzione Cloud Run senza un connettore da Google Cloud CLI:
Aggiorna i componenti di
gcloudall'ultima versione:gcloud components update
Assicurati che l'API Compute Engine sia abilitata per il tuo progetto:
gcloud services enable compute.googleapis.com
Esegui il deployment della funzione Cloud Run con questo comando:
gcloud run deploy FUNCTION_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION \ --function=FUNCTION_ENTRYPOINT
Sostituisci:
- FUNCTION_NAME con il nome della tua funzione Cloud Run.
IMAGE_URLus-docker.pkg.dev/cloudrun/container/hello:latest. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL segue il formatoLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG- NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- SUBNET con il nome della subnet. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet.
- (Facoltativo) NETWORK_TAG_NAMES con i nomi separati da virgole dei tag di rete che vuoi associare a una funzione. Per le funzioni, i tag di rete
vengono specificati a livello di revisione. Ogni revisione può avere
tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- REGION con una regione per la funzione.
- (Facoltativo) FUNCTION_ENTRYPOINT con l'entry point della funzione nel codice sorgente. Questo è il codice che Cloud Run esegue quando viene eseguita la funzione. Il valore di questo flag deve essere un nome di funzione o un nome di classe completo esistente nel codice sorgente.
Per verificare che la funzione si trovi sulla tua rete VPC, esegui questo comando:
gcloud run services describe FUNCTION_NAME \ --region=REGION
Sostituisci:
FUNCTION_NAMEcon il nome della tua funzione.REGIONcon la regione della funzione che hai specificato nel passaggio precedente.
L'output dovrebbe contenere il nome della rete, della subnet e dell'impostazione di uscita, ad esempio:
VPC access: Network: default Subnet: subnet Egress: private-ranges-only
Ora puoi inviare richieste dalla tua funzione Cloud Run a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
YAML
Se stai creando un nuovo servizio, salta questo passaggio. Se stai aggiornando un servizio esistente, scarica la relativa configurazione YAML:
gcloud run services describe SERVICE --format export > service.yaml
Aggiorna i seguenti attributi:
apiVersion: serving.knative.dev/v1 kind: Service metadata: name: SERVICE_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Sostituisci:
- SERVICE_NAME con il nome del tuo servizio Cloud Run. I nomi dei servizi devono contenere al massimo 49 caratteri e devono essere univoci per regione e progetto.
- REGION con la regione del tuo servizio Cloud Run, che deve corrispondere alla regione della tua subnet.
- NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- SUBNET con il nome della subnet. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet.
- (Facoltativo) NETWORK_TAG_NAMES con i nomi dei
tag di rete
che vuoi associare a un servizio. Per i servizi, i tag di rete vengono specificati a livello di revisione. Ogni revisione del servizio può avere
tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- IMAGE con l'URL dell'immagine container del servizio.
Puoi anche specificare una configurazione più dettagliata, ad esempio variabili di ambiente o limiti di memoria.
Crea o aggiorna il servizio utilizzando il seguente comando:
gcloud run services replace service.yaml
Terraform
Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.
Aggiungi quanto segue al tuo file
main.tf:
(Facoltativo) Rendi pubblico il servizio se vuoi consentire l'accesso non autenticato al servizio.
Collega un job a una rete VPC
Il traffico in uscita VPC diretto consente al job Cloud Run di inviare traffico a una rete VPC senza un connettore di accesso VPC serverless. Puoi anche aggiungere tag di rete direttamente ai job Cloud Run per una sicurezza di rete più granulare, ad esempio applicando regole firewall VPC.
Puoi configurare l'uscita VPC diretta con un job utilizzando la consoleCloud de Confiance , Google Cloud CLI o YAML.
Console
Se stai configurando un nuovo job, fai clic sulla scheda Job e compila la pagina delle impostazioni iniziali del job in base alle tue esigenze. Se stai configurando un job esistente, fai clic sul job, quindi su Modifica.
Fai clic su Container, variabili e secret, connessioni, sicurezza per espandere la pagina delle proprietà del job.
Fai clic sulla scheda Connessioni.
Fai clic su Connettiti a un VPC per il traffico in uscita.
Fai clic su Invia il traffico direttamente a un VPC.
Nel campo Rete, seleziona la rete VPC a cui vuoi inviare il traffico.
Nel campo Subnet, seleziona la subnet da cui il job riceve gli indirizzi IP. Puoi eseguire più job sulla stessa subnet.
Per Routing del traffico, seleziona una delle seguenti opzioni:
- Instrada al VPC solo richieste a IP privati per inviare solo traffico agli indirizzi interni tramite la rete VPC.
- Instrada al VPC tutto il traffico per inviare tutto il traffico in uscita attraverso la rete VPC.
(Facoltativo) Inserisci i nomi dei tag di rete che vuoi associare al tuo servizio o ai tuoi servizi. I tag di rete vengono specificati a livello di revisione. Ogni revisione del servizio può avere tag di rete diversi, ad esempio
network-tag-2.(Facoltativo) Inserisci i nomi dei tag di rete che vuoi associare al tuo job o ai tuoi job. Per i job, i tag di rete vengono specificati a livello di esecuzione. Ogni esecuzione del job può avere tag di rete diversi, ad esempio
network-tag-2.Fai clic su Crea o Aggiorna.
Per verificare che il job si trovi nella tua rete VPC, fai clic sul job e poi sulla scheda Configurazione. La rete e la subnet sono elencate nella scheda VPC.
Ora puoi eseguire il job Cloud Run e inviare richieste dal job a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
gcloud
Per creare un job Cloud Run senza un connettore da Google Cloud CLI:
Aggiorna i componenti di
gcloudall'ultima versione:gcloud components update
Assicurati che l'API Compute Engine sia abilitata per il tuo progetto:
gcloud services enable compute.googleapis.com
Crea un job Cloud Run con questo comando:
gcloud run jobs create JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --vpc-egress=EGRESS_SETTING \ --region=REGION
Sostituisci:
- JOB_NAME con il nome del tuo job Cloud Run.
IMAGE_URL: un riferimento all'immagine container, ad esempious-docker.pkg.dev/cloudrun/container/job:latest- NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- SUBNET con il nome della subnet. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet.
- (Facoltativo) NETWORK_TAG_NAMES con i nomi dei
tag di rete
che vuoi associare a un job. Per i job, i tag di rete vengono specificati
a livello di esecuzione. Ogni esecuzione del job può avere tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- REGION con una regione per il job.
Per verificare che il job si trovi nella tua rete VPC, esegui questo comando:
gcloud run jobs describe JOB_NAME \ --region=REGION
Sostituisci:
JOB_NAMEcon il nome del job.REGIONcon la regione del job specificata nel passaggio precedente.
L'output dovrebbe contenere il nome della rete e della subnet, ad esempio:
VPC network: Network: default Subnet: default
Ora puoi eseguire il job Cloud Run e inviare richieste dal job a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.
YAML
Se stai creando un nuovo job, salta questo passaggio. Se stai aggiornando un job esistente, scarica la relativa configurazione YAML:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Aggiorna i seguenti attributi:
apiVersion: run.googleapis.com/v1 kind: Job metadata: name: JOB_NAME labels: cloud.googleapis.com/location: REGION spec: template: metadata: annotations: run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]' run.googleapis.com/vpc-access-egress: EGRESS_SETTING spec: containers: - image: IMAGE
Sostituisci:
- JOB_NAME con il nome del tuo job Cloud Run. I nomi dei job devono contenere al massimo 49 caratteri e devono essere univoci per regione e progetto.
- REGION con la regione del job Cloud Run, che deve corrispondere alla regione della subnet.
- NETWORK con il nome della tua rete VPC. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete.
- SUBNET con il nome della subnet. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet.
- (Facoltativo) NETWORK_TAG_NAMES con i nomi dei
tag di rete
che vuoi associare a un job. Per i job, i tag di rete vengono specificati
a livello di esecuzione. Ogni esecuzione del job può avere tag di rete diversi, ad esempio
network-tag-2. - EGRESS_SETTING con un
valore di impostazione del traffico in uscita:
all-traffic: invia tutto il traffico in uscita tramite la rete VPC.private-ranges-only: Invia solo il traffico agli indirizzi interni tramite la rete VPC.
- IMAGE con l'URL dell'immagine container del job.
Crea o aggiorna il job utilizzando il seguente comando:
gcloud run jobs replace job.yaml
Configurare il dual-stack (IPv4 e IPv6)
Per aggiungere una subnet a doppio stack con un intervallo IPv6 a una risorsa Cloud Run, consulta Configura il doppio stack.
Limitare l'accesso con regole firewall
Limita l'accesso alle risorse in una rete VPC utilizzando le regole firewall VPC. Aggiungi queste limitazioni utilizzando una delle seguenti strategie:
- Crea una regola firewall in entrata che faccia riferimento al tuo servizio o job utilizzando l'intervallo IP della subnet.
Crea una regola firewall in uscita che faccia riferimento al tuo servizio o job.
Nella regola firewall in uscita, fai riferimento al tuo servizio o al tuo job utilizzando l'identità di servizio del account di servizio collegato, l'intervallo IP della subnet o i tag di rete associati.
Tag di rete per il traffico in uscita
Aggiungi un ulteriore livello di sicurezza di rete utilizzando i tag di rete nelle regole firewall in uscita.
Console
Per associare tag di rete a un servizio o un job:
Nella console Cloud de Confiance , vai alla pagina Cloud Run.
Fai clic sul servizio o sul lavoro a cui vuoi associare i tag di rete, quindi fai clic su Modifica per i lavori.
Fai clic sulla scheda Networking per i servizi o sulla scheda Connessioni per i lavori.
Assicurati di aver selezionato Connettiti a un VPC per il traffico in uscita e Invia il traffico direttamente a un VPC.
Nel campo Subnet, seleziona la subnet da cui il servizio riceve gli indirizzi IP. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet.
Nel campo Tag di rete, inserisci i nomi dei tag di rete che vuoi associare al tuo servizio o lavoro.
Per i lavori, fai clic su Aggiorna. Per i servizi, fai clic su Visualizza differenze e rifai il deployment, quindi su Esegui il deployment delle modifiche.
Per i servizi, ogni revisione del servizio può avere un insieme diverso di tag di rete perché i tag di rete vengono specificati a livello di revisione. Per i job, un'esecuzione del job ha gli stessi tag di rete del job al momento della creazione dell'esecuzione del job.
gcloud
Per associare tag di rete
a un servizio o a un job, utilizza il comando gcloud run deploy:
gcloud run deploy SERVICE_JOB_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --network-tags=NETWORK_TAG_NAMES \ --region=REGION
Sostituisci quanto segue:
- SERVICE_JOB_NAME con il nome del tuo servizio o lavoro.
- IMAGE_URL con l'URL dell'immagine del servizio o dell'offerta di lavoro.
- NETWORK con il nome della tua rete VPC.
- SUBNET con il nome della subnet. Specifica una rete VPC o una subnet oppure entrambe. Se specifichi solo una rete, la subnet utilizza lo stesso nome della rete. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet.
- NETWORK_TAG_NAMES con il nome del tag di rete o un elenco separato da virgole di tag di rete.
- REGION con il nome della tua regione.
Per i servizi, ogni revisione del servizio può avere un insieme diverso di tag di rete perché i tag di rete vengono specificati a livello di revisione. Per i job, un'esecuzione del job ha gli stessi tag di rete del job al momento della creazione dell'esecuzione del job.
Disconnetti una risorsa Cloud Run
A seconda della risorsa Cloud Run che hai, consulta le istruzioni in una delle seguenti sezioni:
Disconnettere un servizio
Console
Per rimuovere il servizio dalla rete VPC:
Fai clic sul servizio.
Fai clic sulla scheda Networking.
Deseleziona Connettiti a un VPC per il traffico in uscita.
Fai clic su Visualizza differenze e fai di nuovo il deployment, poi su Esegui il deployment delle modifiche.
Per verificare che il servizio non sia più nella rete VPC, fai clic sulla scheda Networking. La rete e la subnet non sono più elencate nella scheda VPC.
Per rimuovere solo i tag di rete mantenendo il servizio connesso alla rete VPC:
Fai clic sul servizio che contiene i tag di rete che vuoi rimuovere.
Fai clic sulla scheda Networking.
Cancella i nomi dei tag di rete che non vuoi più associare al tuo servizio.
Fai clic su Visualizza differenze e fai di nuovo il deployment, poi su Esegui il deployment delle modifiche.
gcloud
Per rimuovere il servizio dalla rete VPC, esegui il seguente comando:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network
Per rimuovere solo i tag di rete mantenendo il servizio connesso alla rete VPC, esegui questo comando:
gcloud run services update SERVICE_NAME --region=REGION \ --clear-network-tags
Sostituisci quanto segue:
- SERVICE_NAME: il nome del servizio Cloud Run.
- REGION: la regione per il tuo servizio Cloud Run.
YAML
Per rimuovere il servizio dalla rete VPC:
Scarica la configurazione YAML del servizio:
gcloud run services describe SERVICE_NAME --format export > service.yaml
Rimuovi i seguenti contenuti dal file
service.yaml:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
Dove
- NETWORK: il nome della tua rete VPC.
- SUBNET: il nome della subnet.
- (Facoltativo) NETWORK_TAG_NAMES: i nomi dei tag di rete se li hai associati a un servizio.
Esegui il deployment della revisione del servizio eseguendo questo comando:
gcloud run services replace service.yaml
Per rimuovere solo i tag di rete mantenendo il servizio connesso alla rete VPC:
Scarica la configurazione YAML del servizio:
gcloud run services describe SERVICE_NAME --format export > service.yaml
Rimuovi la variabile
tagsdai contenuti del fileservice.yaml, lasciando le variabilinetworkesubnetwork, come mostrato nell'esempio seguente:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
Dove
- NETWORK: il nome della tua rete VPC.
- SUBNET: il nome della subnet.
Esegui il deployment della revisione del servizio eseguendo questo comando:
gcloud run services replace service.yaml
Scollegare un job
Console
Per rimuovere il job dalla rete VPC:
Fai clic sul job che vuoi rimuovere, poi su Modifica ed esegui il deployment di una nuova revisione.
Fai clic sulla scheda Connessioni.
Deseleziona Connettiti a un VPC per il traffico in uscita.
Fai clic su Aggiorna.
Per verificare che il job non si trovi più nella rete VPC, fai clic sulla scheda Configurazione. La rete e la subnet non sono più elencate nella scheda VPC.
Per rimuovere solo i tag di rete mantenendo il job connesso alla rete VPC:
Fai clic sul job contenente i tag di rete da rimuovere, quindi fai clic su Modifica e implementa nuova revisione.
Fai clic sulla scheda Connessioni.
Cancella i nomi dei tag di rete che non vuoi più associare al tuo job.
Fai clic su Aggiorna.
gcloud
Per rimuovere il job dalla rete VPC, esegui questo comando:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network
Per rimuovere solo i tag di rete mantenendo il job connesso alla rete VPC, esegui questo comando:
gcloud run jobs update JOB_NAME --region=REGION \ --clear-network-tags
Sostituisci quanto segue:
- JOB_NAME: il nome del job Cloud Run.
- REGION: la regione per il tuo job Cloud Run.
YAML
Per rimuovere il job dalla rete VPC:
Scarica la configurazione YAML del job:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Rimuovi i seguenti contenuti dal file
job.yaml:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET","tags":"NETWORK_TAG_NAMES"}]'
Sostituisci quanto segue:
- NETWORK: il nome della tua rete VPC.
- SUBNET: il nome della subnet.
- (Facoltativo) NETWORK_TAG_NAMES con i nomi dei tag di rete se li avevi associati a un lavoro.
Aggiorna il job eseguendo questo comando:
gcloud run jobs replace job.yaml
Per rimuovere solo i tag di rete mantenendo il job connesso alla rete VPC:
Scarica la configurazione YAML del job:
gcloud run jobs describe JOB_NAME --format export > job.yaml
Rimuovi la variabile
tagsdai contenuti del filejob.yaml, lasciando le variabilinetworkesubnetwork, come mostrato nell'esempio seguente:run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'
Sostituisci quanto segue:
- NETWORK: il nome della tua rete VPC.
- SUBNET: il nome della subnet.
Aggiorna il job eseguendo questo comando:
gcloud run jobs replace job.yaml
Risoluzione dei problemi
Impossibile eliminare la subnet
Per eliminare una subnet, devi prima eliminare o ripetere il deployment di tutte le risorse che la utilizzano. Se Cloud Run utilizza una subnet, disconnetti il servizio o il job Cloud Run dalla rete VPC o spostalo in una subnet diversa prima di eliminare la subnet.
La subnet VPC diretto in uscita esaurisce gli indirizzi IPv4
Quando provi a eseguire il deployment, si verifica il seguente errore:
Instance failed to start because of insufficient free IP addresses in the subnetwork SUBNET_ID when attempting to create an address in the subnetwork. Please consider moving to a subnetwork with more available IP addresses.
Se la subnet della rete VPC esaurisce gli indirizzi IPv4, viene registrata da Cloud Logging. Quando ciò si verifica, Cloud Run non può avviare altre istanze di servizio o attività di job finché non saranno disponibili altri indirizzi IPv4.
Per risolvere il problema, segui le strategie di esaurimento degli indirizzi IP.
Visualizzare gli indirizzi IP allocati
Non puoi eliminare manualmente un indirizzo riservato. Il seguente errore si verifica quando provi a eliminare un indirizzo IP allocato per Cloud Run:
The address resource 'ADDRESS_NAME' is already being used by '//serverless.googleapis.com/projects/PROJECT_ID/locations/REGION/addressReservations/ADDRESS_NAME'
Per vedere quali indirizzi IP sono stati allocati da Cloud Run, vai alla pagina Indirizzi IP nella consoleCloud de Confiance e cerca gli indirizzi in cui la colonna In uso da è impostata su Serverless.
In alternativa, puoi eseguire il seguente comando da Google Cloud CLI:
gcloud compute addresses list --filter="purpose=SERVERLESS"
Problemi con la MTU personalizzata
Se riscontri problemi con una MTU personalizzata, assicurati di utilizzare l'impostazione MTU predefinita per Cloud Run.