Per impostazione predefinita, un servizio Cloud Run si connette a endpoint esterni su internet utilizzando un pool di indirizzi IP dinamici. Se il servizio Cloud Run si connette a un endpoint esterno che richiede un indirizzo IP statico come un database o un'API utilizzando un firewall basato su indirizzi IP, devi configurare Servizio Cloud Run per instradare le richieste utilizzando un indirizzo IP statico.
Questa pagina descrive come abilitare un servizio Cloud Run per inviare richieste utilizzando un indirizzo IP statico.
Panoramica delle attività
Per abilitare un servizio Cloud Run a instradare le richieste utilizzando un configurare l'indirizzo IP del servizio Cloud Run, Traffico in uscita VPC per instradare tutto il traffico in uscita attraverso una rete VPC con un Gateway Cloud NAT configurato con l'indirizzo IP statico.
Il routing del traffico tramite Cloud NAT non comporta hop aggiuntivo nello stack di networking, dato che il gateway Cloud NAT Il router Cloud fornisce solo un piano di controllo e i pacchetti non vengono trasmessi il gateway NAT o il router Cloud.
Tutti i servizi Cloud Run connessi allo stesso La rete VPC condivide lo stesso indirizzo IP in uscita. Per utilizzare indirizzi IP di uscita diversi per servizi Cloud Run separati, consulta questa pagina per creare subnet separate e, facoltativamente, connettori di accesso VPC serverless.
Crea una subnet
Devi creare una subnet /28
dedicata per ospitare un connettore. Se utilizzi
Traffico VPC diretto in uscita, utilizza un modello
una subnet o crearne un'altra. Se utilizzi un connettore, la subnet dedicata impedisce ad altre risorse di calcolo nella rete VPC, ad esempio le VM Compute Engine o i cluster Google Kubernetes Engine, di utilizzare accidentalmente l'indirizzo IP statico se hai configurato l'accesso VPC serverless per accedere a internet.
gcloud
Trova il nome della rete VPC:
gcloud compute networks list
Dovresti vedere un output simile al seguente:
NAME SUBNET_MODE BGP_ROUTING_MODE default AUTO REGIONAL
Identifica la rete che collegherai al tuo Connettore di accesso VPC serverless.
Crea una subnet nel VPC per il connettore di accesso VPC serverless.
gcloud compute networks subnets create SUBNET_NAME \ --range=RANGE --network=NETWORK_NAME --region=REGION
Sostituisci i seguenti valori in questo comando:
SUBNET_NAME
con il nome che vuoi assegnare alla sottorete.RANGE
con l'intervallo IP in formato CIDR che vuoi assegnare a questa subnet (ad esempio10.124.0.0/28
).NETWORK_NAME
con il nome del rete VPC.REGION
con la regione che vuoi e creare un connettore di accesso VPC serverless.
Terraform
Crea la rete VPC da utilizzare.
Sostituisci
cr-static-ip-network
con il nome della subnet.Crea una subnet nel VPC per il connettore di accesso VPC serverless.
Sostituisci quanto segue:
cr-static-ip
con il nome della subnet.10.124.0.0/28
con il tuo intervallo CIDR.us-central1
con la tua regione Google Cloud.
Crea un connettore di accesso VPC serverless
Non è necessario creare un connettore se utilizzi il traffico VPC diretto in uscita. Se non utilizzi il traffico VPC diretto in uscita, è necessario un accesso VPC serverless per instradare il traffico in uscita del servizio Cloud Run a un rete VPC.
Per creare un connettore di accesso VPC serverless:
gcloud
Crea un connettore di accesso VPC serverless con una sottorete precreata.
gcloud compute networks vpc-access connectors create CONNECTOR_NAME \ --region=REGION \ --subnet-project=PROJECT_ID \ --subnet=SUBNET_NAME
Sostituisci i seguenti valori in questo comando:
CONNECTOR
con il nome che vuoi assegnare a questa risorsa.PROJECT_ID
con un nome che ospita la subnet.SUBNET_NAME
con il nome della subnet che che hai creato.REGION
con la regione in cui vuoi creare un gateway Cloud NAT.
Terraform
Creare un connettore di accesso VPC serverless.
Sostituisci
cr-conn
con il nome del connettore di accesso VPC serverless.
Configura la Network Address Translation (NAT)
Se utilizzi il traffico VPC diretto in uscita o un accesso VPC serverless le richieste dal tuo servizio Cloud Run arrivano al tuo rete VPC. Se vuoi indirizzare le richieste in uscita a indirizzi utilizzando un IP statico, configura un gateway Cloud NAT.
gcloud
Crea un nuovo router Cloud per programmare un gateway Cloud NAT:
gcloud compute routers create ROUTER_NAME \ --network=NETWORK_NAME \ --region=REGION
Sostituisci i seguenti valori in questo comando:
ROUTER_NAME
con un nome per la risorsa Cloud Router che vuoi creare.NETWORK_NAME
con il nome della rete VPC che hai trovato in precedenza.REGION
con la regione in cui vuoi creare un gateway Cloud NAT.
Prenota un indirizzo IP statico. Una risorsa di indirizzo IP riservato conserva all'indirizzo IP sottostante quando la risorsa a cui è associata è eliminato e ricreato:
gcloud compute addresses create ORIGIN_IP_NAME --region=REGION
Sostituisci i seguenti valori in questo comando:
ORIGIN_IP_NAME
con il nome da assegnare alla risorsa indirizzo IP.REGION
con la regione in cui verrà eseguito il router Cloud NAT. Utilizza la stessa regione del Servizio Cloud Run per ridurre al minimo la latenza e i costi di rete.
Crea una configurazione gateway Cloud NAT su questo router per instrada il traffico proveniente dalla rete VPC utilizzando l'indirizzo IP statico che hai creato:
gcloud compute routers nats create NAT_NAME \ --router=ROUTER_NAME \ --region=REGION \ --nat-custom-subnet-ip-ranges=SUBNET_NAME \ --nat-external-ip-pool=ORIGIN_IP_NAME
Sostituisci i seguenti valori in questo comando:
NAT_NAME
con un nome per Cloud NAT gateway VPN ad alta disponibilità che vuoi creare.ROUTER_NAME
con il nome del tuo router Cloud.REGION
con la regione che vuoi per creare un gateway Cloud NAT.SUBNET_NAME
con il nome della subnet.ORIGIN_IP_NAME
con il nome della risorsa indirizzo IP riservato che hai creato nel passaggio precedente.
Terraform
Crea un nuovo router Cloud per programmare un gateway Cloud NAT:
Sostituisci
cr-static-ip-router
con il nome della tua subnet.Prenota un indirizzo IP statico. Una risorsa di indirizzo IP riservato conserva all'indirizzo IP sottostante quando la risorsa a cui è associata è eliminati e ricreati:
Sostituisci
cr-static-ip-addr
con il nome della subnet.Crea una configurazione del gateway Cloud NAT su questo router per indirizzare il traffico proveniente dalla rete VPC utilizzando l'indirizzo IP statico che hai creato:
Sostituisci
cr-static-nat
con il nome del gateway Cloud NAT.
Instrada il traffico di Cloud Run attraverso la rete VPC
Dopo aver configurato Cloud NAT, esegui il deployment o l'aggiornamento di Cloud Run con il traffico in uscita VPC diretto o Accesso VPC serverless e imposta il traffico VPC in uscita su instrada tutto il traffico attraverso la rete VPC:
gcloud
Uscita diretta VPC
Per eseguire il deployment o l'aggiornamento del servizio Cloud Run in modo che utilizzi l'egress VPC diretto e instrada tutto il traffico in uscita, esegui il seguente comando:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --network=NETWORK \ --subnet=SUBNET \ --region=REGION \ --vpc-egress=all-traffic
Sostituisci i seguenti valori in questo comando:
- SERVICE_NAME con il nome del servizio Cloud Run che vuoi eseguire.
- IMAGE_URL con un riferimento all'immagine del container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già stato creato. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
. - NETWORK con il nome della tua rete VPC.
- SUBNET con il nome della tua subnet.
- REGION con una regione per il tuo servizio.
Connettore di accesso VPC serverless
Per eseguire il deployment o aggiornare il servizio Cloud Run in modo che utilizzi una Connettore di accesso VPC serverless e instrada tutto il traffico in uscita e il traffico che la attraversa, esegui questo comando:
gcloud run deploy SERVICE_NAME \ --image=IMAGE_URL \ --vpc-connector=CONNECTOR_NAME \ --region=REGION \ --vpc-egress=all-traffic
Sostituisci i seguenti valori in questo comando:
- SERVICE_NAME con il nome del servizio Cloud Run che vuoi eseguire.
- IMAGE_URL con un riferimento all'immagine del container, ad esempio
us-docker.pkg.dev/cloudrun/container/hello:latest
. Se utilizzi Artifact Registry, il repository REPO_NAME deve essere già creati. L'URL ha la formaLOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
di Google. - CONNECTOR_NAME con il nome del tuo Connettore di accesso VPC serverless.
- REGION con una regione per il tuo servizio.
Terraform
Questo servizio Cloud Run utilizza un connettore VPC instrada al suo interno tutto il traffico in uscita:
Sostituisci us-docker.pkg.dev/cloudrun/container/hello
con un riferimento all'immagine del contenitore.
Verifica l'indirizzo IP esterno statico
Dopo aver completato i passaggi precedenti, hai configurato Cloud NAT sulla tua rete VPC con un indirizzo IP statico predefinito e hai inoltrato tutto il traffico in uscita del servizio Cloud Run alla tua rete VPC. Richieste dalla corsa del servizio Cloud Run attraverso la rete VPC e raggiungere endpoint esterni l'indirizzo IP statico.
Per verificare questo comportamento e confermare l'indirizzo IP di origine con cui il servizio , puoi effettuare una richiesta a un'API o a un sito web come curlmyip.org che mostra l'indirizzo IP di origine.
Eliminazione dell'indirizzo IP esterno statico
Se non hai più bisogno di un indirizzo IP esterno statico, consulta l'articolo Rilasciare un indirizzo IP esterno statico.