Uscita VPC diretta con una rete VPC

Puoi consentire al tuo servizio, job o pool di worker Cloud Run di inviare traffico a una rete VPC utilizzando il traffico VPC diretto in uscita senza richiedere un connettore di accesso VPC serverless.

Prima di iniziare

Limitazioni

Ai servizi, ai job e ai pool di worker di Cloud Run si applicano le seguenti limitazioni:

  • 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 è configurato per revisione o esecuzione del job Cloud Run. Per aumentare i limiti predefiniti, vedi come aumentare le quote.

  • I servizi, i job e i pool di worker di 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.
  • Potresti riscontrare ritardi nella connettività a internet all'avvio dell'istanza quando utilizzi l'uscita VPC diretto con Cloud NAT. In questo caso, ti consigliamo di implementare una logica di nuovo tentativo personalizzata.
  • Il supporto dell'uscita VPC diretta per il traffico IPv6 interno è disponibile solo in anteprima.
  • NAT privato è disponibile solo in anteprima.

I seguenti elementi non sono supportati dal traffico VPC diretto in uscita:

  • I log di flusso VPC non forniscono il nome del servizio o della revisione Cloud Run.
  • I log di flusso VPC non vengono segnalati da risorse non VM come Cloud Run o macchine on-premise.
  • Mirroring pacchetto
  • Network Intelligence Center, inclusi Connectivity Tests
  • Traffico IPv6 esterno su una rete VPC
  • Tag di rete o identità del servizio nelle regole firewall in entrata.
  • Le regole firewall non possono utilizzare i tag Resource Manager collegati ai carichi di lavoro Cloud Run.
  • 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 container riceve un segnale SIGTSTP 10 secondi prima dell'evento e un segnale SIGCONT dopo l'evento. Dopo che il contenitore riceve il segnale SIGCONT, riprova la connessione.

Allocazione degli indirizzi IP

Per inserire il servizio, il job o il pool di worker Cloud Run in una rete VPC, devi specificare una rete e una subnet. Cloud Run alloca indirizzi IP dalla tua subnet.

Gli indirizzi IP sono temporanei, quindi non creare policy basate su singoli IP. Se devi creare un criterio basato 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 servizio, dal job o dal pool di worker, 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 uno scale up più rapido durante un picco di traffico, Cloud Run riserva indirizzi IP in blocchi di 16 (maschera di sottorete 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 l'efficienza dell'allocazione IP e la facilità di gestione, 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 eseguire nuovamente il deployment dei servizi, dei job o dei pool di worker Cloud Run per interrompere l'utilizzo della subnet, quindi attendere 1-2 ore.

Consumo di indirizzi IP per servizi e pool di worker

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 di 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 lavori

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 che termina sempre 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:

  • RFC 1918
    • 10.0.0.0/8
    • 172.16.0.0/12
    • 192.168.0.0/16
  • RFC 6598
    • 100.64.0.0/10
  • Classe E
    • 240.0.0.0/4

Configura le autorizzazioni IAM

Assicurati che Cloud Run abbia accesso alla rete VPC utilizzando uno dei seguenti metodi:

  • Ruolo Agente di servizio Cloud Run: per impostazione predefinita, l'agente di servizio Cloud Run dispone del ruolo Agente di servizio Cloud Run (roles/run.serviceAgent) che contiene le autorizzazioni necessarie.

  • Autorizzazioni personalizzate: per un controllo più granulare, concedi all'agente di servizio Cloud Run le seguenti autorizzazioni aggiuntive per il progetto:

    • compute.networks.get
    • compute.subnetworks.get
    • compute.subnetworks.use sul progetto o sulla subnet specifica
    • compute.addresses.get
    • compute.addresses.list
    • compute.addresses.createInternal
    • compute.addresses.deleteInternal
    • compute.regionOperations.get
  • Ruolo Utente di rete Compute: se non utilizzi il ruolo Agente di servizio Cloud Run predefinito o le autorizzazioni personalizzate, concedi il ruolo Utente di rete Compute (roles/compute.networkUser) al account di servizio Agente di servizio Cloud Run eseguendo il seguente comando:

    gcloud projects add-iam-policy-binding PROJECT_ID \
    --member "serviceAccount:service-PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com" \
    --role "roles/compute.networkUser"

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.
    • PROJECT_NUMBER: il numero di progetto in cui deploy il servizio, il job o il pool di worker Cloud Run.

Esegui il deployment di una risorsa Cloud Run

A seconda della risorsa Cloud Run che hai, consulta le istruzioni in una delle seguenti sezioni:

Esegui il deployment di un servizio

Il traffico VPC diretto in uscita consente al servizio Cloud Run di inviare il 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 consoleGoogle Cloud , Google Cloud CLI, YAML o Terraform.

Console

  1. Vai a Cloud Run

  2. 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, quindi su Modifica ed esegui il deployment della nuova revisione.

  3. Se stai configurando un nuovo servizio, compila la pagina iniziale delle impostazioni del servizio in base alle tue esigenze, quindi fai clic su Container, volumi, networking, sicurezza per espandere la pagina di configurazione del servizio.

  4. Fai clic sulla scheda Networking.

  5. Fai clic su Connettiti a un VPC per il traffico in uscita.

  6. Fai clic su Invia il traffico direttamente a un VPC.

  7. Nel campo Rete, seleziona la rete VPC a cui vuoi inviare il traffico.

  8. Nel campo Subnet, seleziona la subnet da cui il servizio riceve gli indirizzi IP. Puoi eseguire il deployment di più servizi nella stessa subnet.

  9. (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.

  10. 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 tramite la rete VPC.
  11. Fai clic su Crea o Esegui il deployment.

  12. Per verificare che il servizio si trovi nella rete VPC, fai clic sul servizio, quindi fai clic 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

Per eseguire il deployment di un servizio Cloud Run senza un connettore da Google Cloud CLI:

  1. Aggiorna i componenti di gcloud all'ultima versione:

    gcloud components update
  2. Assicurati che l'API Compute Engine sia abilitata per il tuo progetto:

    gcloud services enable compute.googleapis.com
    
  3. 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_URL con un riferimento all'immagine 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 forma LOCATION-docker.pkg.dev/PROJECT_ID/REPO_NAME/PATH:TAG
    • NETWORK con il nome della tua rete VPC.
    • SUBNET con il nome della tua subnet. Puoi eseguire il deployment o l'esecuzione di più servizi, job o pool di worker 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 di 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.
  4. Per verificare che il servizio si trovi sulla rete VPC, esegui il seguente comando:

    gcloud run services describe SERVICE_NAME \
    --region=REGION

    Sostituisci:

    • SERVICE_NAME con il nome del tuo servizio.
    • REGION con la regione per il tuo servizio che hai specificato nel passaggio precedente.

    L'output deve 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.

YAML

  1. 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
  2. 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.
    • SUBNET con il nome della tua subnet. Puoi eseguire il deployment o l'esecuzione di più servizi, job o pool di worker 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 di 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 più configurazioni, come variabili di ambiente o limiti di memoria.

  3. 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.

  1. Aggiungi quanto segue al tuo file main.tf:

    /**
     * Copyright 2024 Google LLC
     *
     * Licensed under the Apache License, Version 2.0 (the "License");
     * you may not use this file except in compliance with the License.
     * You may obtain a copy of the License at
     *
     *      http://www.apache.org/licenses/LICENSE-2.0
     *
     * Unless required by applicable law or agreed to in writing, software
     * distributed under the License is distributed on an "AS IS" BASIS,
     * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
     * See the License for the specific language governing permissions and
     * limitations under the License.
     */
    
    # Example configuration of a Cloud Run service with direct VPC
    
    resource "google_cloud_run_v2_service" "default" {
      name     = "cloudrun-service"
      location = "us-central1"
    
      deletion_protection = false # set to "true" in production
    
      template {
        containers {
          image = "us-docker.pkg.dev/cloudrun/container/hello"
        }
        vpc_access {
          network_interfaces {
            network    = "default"
            subnetwork = "default"
            tags       = ["tag1", "tag2", "tag3"]
          }
        }
      }
    }
    

Se vuoi consentire l'accesso non autenticato al servizio, rendilo pubblico.

Crea un job

L'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 le regole firewall VPC.

Puoi configurare l'uscita VPC diretta con un job utilizzando la consoleGoogle Cloud , Google Cloud CLI o YAML.

Console

  1. Vai a Cloud Run

  2. Se stai configurando un nuovo job, fai clic sulla scheda Job e compila la pagina delle impostazioni iniziali del job in base alle esigenze. Se stai configurando un job esistente, fai clic sul job e poi su Modifica.

  3. Fai clic su Container, variabili e secret, connessioni, sicurezza per espandere la pagina delle proprietà del job.

  4. Fai clic sulla scheda Connessioni.

  5. Fai clic su Connettiti a un VPC per il traffico in uscita.

  6. Fai clic su Invia il traffico direttamente a un VPC.

  7. Nel campo Rete, seleziona la rete VPC a cui vuoi inviare il traffico.

  8. Nel campo Subnet, seleziona la subnet da cui il job riceve gli indirizzi IP. Puoi eseguire più job sulla stessa subnet.

  9. 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 tramite la rete VPC.
  10. (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.

  11. (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.

  12. Fai clic su Crea o Aggiorna.

  13. Per verificare che il job si trovi nella tua rete VPC, fai clic sul job, quindi fai clic 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:

  1. Aggiorna i componenti di gcloud all'ultima versione:

    gcloud components update
  2. Assicurati che l'API Compute Engine sia abilitata per il tuo progetto:

    gcloud services enable compute.googleapis.com
    
  3. Crea un job Cloud Run con il seguente 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 con un riferimento all'immagine container, ad esempio us-docker.pkg.dev/cloudrun/container/job:latest
    • NETWORK con il nome della tua rete VPC.
    • SUBNET con il nome della tua subnet. Puoi eseguire il deployment o l'esecuzione di più servizi, job o pool di worker 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 di 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.
  4. Per verificare che il job si trovi nella tua rete VPC, esegui questo comando:

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    Sostituisci:

    • JOB_NAME con il nome del job.
    • REGION con la regione del job che hai specificato nel passaggio precedente.

    L'output deve 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

  1. 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
  2. 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 tuo job Cloud Run, che deve corrispondere alla regione della tua subnet.
    • NETWORK con il nome della tua rete VPC.
    • SUBNET con il nome della tua subnet. Puoi eseguire il deployment o l'esecuzione di più servizi, job o pool di worker 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 di 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.
  3. Crea o aggiorna il job utilizzando il seguente comando:

    gcloud run jobs replace job.yaml

Esegui il deployment di un worker pool

L'uscita VPC diretto consente al pool di worker 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 pool di worker. Puoi anche aggiungere tag di rete direttamente alle revisioni del pool di worker Cloud Run per una sicurezza di rete più granulare, ad esempio applicando regole firewall VPC.

Puoi configurare l'uscita VPC diretta con un pool di worker utilizzando Google Cloud CLI.

gcloud

Per eseguire il deployment di un pool di worker Cloud Run senza un connettore da Google Cloud CLI:

  1. Aggiorna i componenti di gcloud all'ultima versione:

    gcloud components update
  2. Assicurati che l'API Compute Engine sia abilitata per il tuo progetto:

    gcloud services enable compute.googleapis.com
    
  3. Esegui il deployment del pool di worker Cloud Run con questo comando:

    gcloud beta run worker-pools deploy WORKER_POOL \
        --image=IMAGE_URL \
        --network=NETWORK \
        --subnet=SUBNET \
        --network-tags=NETWORK_TAG_NAMES \
        --vpc-egress=EGRESS_SETTING \
        --region=REGION

    Sostituisci:

    • WORKER_POOL con il nome del tuo pool di worker Cloud Run. I nomi dei pool di lavoratori devono contenere al massimo 49 caratteri, utilizzare un nome univoco per regione e progetto e non devono condividere lo stesso nome di un nome di servizio esistente del tuo progetto. Se il worker pool non esiste ancora, questo comando lo crea durante il deployment. Puoi omettere completamente questo parametro, ma ti verrà chiesto il nome del pool di worker se lo ometti.
    • IMAGE_URL con un riferimento all'immagine container che contiene il pool di worker, ad esempio us-docker.pkg.dev/cloudrun/container/worker-pool:latest
    • NETWORK con il nome della tua rete VPC.
    • SUBNET con il nome della tua subnet. Puoi eseguire il deployment o l'esecuzione di più servizi, job o pool di worker nella stessa subnet.
    • (Facoltativo) NETWORK_TAG_NAMES con i nomi separati da virgole dei tag di rete che vuoi associare a un pool di worker. Per i servizi, i tag di rete vengono specificati a livello di revisione. Ogni revisione del pool di worker può avere tag di rete diversi, ad esempio network-tag-2.
    • EGRESS_SETTING con un valore di impostazione di 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 pool di worker.
  4. Per verificare che il pool di worker si trovi nella tua rete VPC, esegui questo comando:

    gcloud beta run worker-pools describe WORKER_POOL \
        --region=REGION

    Sostituisci:

    • WORKER_POOL con il nome del tuo pool di worker.
    • REGION con la regione del pool di worker che hai specificato nel passaggio precedente.

    L'output deve 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 pool di worker Cloud Run a qualsiasi risorsa sulla rete VPC, come consentito dalle regole firewall.

Configura servizi e job dual-stack

Per aggiungere una subnet a doppio stack con un intervallo IPv6 interno a un servizio o un job Cloud Run, consulta Configurare servizi e job a doppio stack.

Limitare l'accesso con le 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à del 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 a un job:

  1. Nella Google Cloud console, vai alla pagina Cloud Run.

    Vai a Cloud Run

  2. Fai clic sul servizio o sul job a cui vuoi associare i tag di rete, poi fai clic su Modifica e implementa nuova revisione per i servizi o su Modifica per i job.

  3. Fai clic sulla scheda Networking per i servizi o sulla scheda Connessioni per i job.

  4. Assicurati di aver selezionato Connettiti a un VPC per il traffico in uscita e Invia il traffico direttamente a un VPC.

  5. 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.

  6. Nel campo Tag di rete, inserisci i nomi dei tag di rete che vuoi associare al tuo servizio o lavoro.

  7. Fai clic su Esegui il deployment o Aggiorna.

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 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 tua subnet. Puoi eseguire il deployment o l'esecuzione di più servizi, job o pool di worker nella stessa subnet.
  • NETWORK_TAG_NAMES con il nome del tag di rete o un elenco di tag di rete separati da virgole.
  • 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:

    1. Vai a Cloud Run

    2. Fai clic sul servizio che vuoi rimuovere, poi su Modifica ed esegui il deployment di una nuova revisione.

    3. Fai clic sulla scheda Networking.

    4. Deseleziona Connettiti a un VPC per il traffico in uscita.

    5. Fai clic su Esegui il deployment.

    6. Per verificare che il servizio non sia più nella tua 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:

    1. Fai clic sul servizio che contiene i tag di rete da rimuovere, poi fai clic su Modifica e implementa nuova revisione.

    2. Fai clic sulla scheda Networking.

    3. Cancella i nomi dei tag di rete che non vuoi più associare al tuo servizio.

    4. Fai clic su Esegui il deployment.

gcloud

  • Per rimuovere il servizio dalla rete VPC, esegui questo 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 tuo servizio Cloud Run.
    • REGION: la regione del tuo servizio Cloud Run.

YAML

  • Per rimuovere il servizio dalla rete VPC:

    1. Scarica la configurazione YAML del servizio:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. 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 rete VPC.
      • SUBNET: il nome della tua subnet.
      • (Facoltativo) NETWORK_TAG_NAMES: i nomi dei tag di rete se li hai associati a un servizio.
    3. 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:

    1. Scarica la configurazione YAML del servizio:

      gcloud run services describe SERVICE_NAME --format export > service.yaml
    2. Rimuovi la variabile tags dai contenuti del file service.yaml, lasciando le variabili network e subnetwork, come mostrato nell'esempio seguente:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      Dove

      • NETWORK: il nome della rete VPC.
      • SUBNET: il nome della subnet.
    3. 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:

    1. Vai a Cloud Run

    2. Fai clic sul job che vuoi rimuovere, poi su Modifica ed esegui il deployment di una nuova revisione.

    3. Fai clic sulla scheda Connessioni.

    4. Deseleziona Connettiti a un VPC per il traffico in uscita.

    5. Fai clic su Aggiorna.

    6. 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:

    1. Fai clic sul job contenente i tag di rete da rimuovere, quindi fai clic su Modifica e implementa nuova revisione.

    2. Fai clic sulla scheda Connessioni.

    3. Cancella i nomi dei tag di rete che non vuoi più associare al tuo job.

    4. 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:

    1. Scarica la configurazione YAML del job:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. 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 rete VPC.
      • SUBNET: il nome della tua subnet.
      • (Facoltativo) NETWORK_TAG_NAMES con i nomi dei tag di rete se li avevi associati a un job.
    3. Aggiorna il job eseguendo il seguente comando:

      gcloud run jobs replace job.yaml
  • Per rimuovere solo i tag di rete mantenendo il job connesso alla rete VPC:

    1. Scarica la configurazione YAML del job:

      gcloud run jobs describe JOB_NAME --format export > job.yaml
    2. Rimuovi la variabile tags dai contenuti del file job.yaml, lasciando le variabili network e subnetwork, come mostrato nell'esempio seguente:

      run.googleapis.com/network-interfaces: '[{"network":"NETWORK","subnetwork":"SUBNET"}]'

      Sostituisci quanto segue:

      • NETWORK: il nome della rete VPC.
      • SUBNET: il nome della tua subnet.
    3. Aggiorna il job eseguendo il seguente comando:

      gcloud run jobs replace job.yaml

Disconnettere un worker pool

gcloud

  • Per rimuovere il pool di worker dalla rete VPC, esegui il seguente comando:

    gcloud beta run worker-pools update WORKER_POOL --region=REGION \
    --clear-network
  • Per rimuovere solo i tag di rete mantenendo il pool di worker connesso alla rete VPC, esegui questo comando:

    gcloud beta run worker-pools update WORKER_POOL --region=REGION \
    --clear-network-tags

    Sostituisci quanto segue:

    • WORKER_POOL: il nome del tuo pool di worker Cloud Run.
    • REGION: la regione del pool di worker Cloud Run.

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 di uscita VPC diretto esaurisce gli indirizzi IPv4

Si verifica il seguente errore quando provi a eseguire il deployment:

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

Per vedere gli indirizzi IP allocati da Cloud Run, vai alla pagina Indirizzi IP nella console Google Cloud o esegui questo comando da Google Cloud CLI:

gcloud compute addresses list

Problemi con l'MTU personalizzata

Se riscontri problemi con un'MTU personalizzata, assicurati di utilizzare l'impostazione MTU predefinita per Cloud Run.