Connessione a una rete VPC

Questa pagina mostra come collegare un Servizio Cloud Run o job alla tua rete VPC, consentendo il traffico in uscita (in uscita) da Cloud Run alle istanze VM di Compute Engine, Istanze Memorystore e qualsiasi altra risorsa con un IP interno .

Puoi abilitare il tuo servizio o job per inviare traffico a un VPC di rete configurando un accesso VPC serverless o utilizzando il traffico VPC diretto in uscita senza bisogno di connettori.

Prima di iniziare

  • Se non hai già una rete VPC nel progetto, creane uno.

  • Se utilizzi VPC condiviso, consulta la documentazione che riguarda specificamente la configurazione di Serverless VPC Access per il tuo prodotto.

  • Se hai un vincolo del criterio dell'organizzazione che impedisce l'utilizzo di Cloud Deployment Manager, non potrai creare o eliminare Connettori di accesso VPC serverless. La creazione o l'eliminazione di un connettore richiede la funzionalità Deployment Manager.

  • Se hai configurato un criterio per l'utilizzo di immagini attendibili per il tuo progetto, assicurati di consentire il progetto serverless-vpc-access-images nei criteri dell'organizzazione constraints/compute.trustedimageProjects.

    Requisiti della subnet del connettore

  • Ogni connettore richiede la propria subnet dedicata PRIVATE con un indirizzo IPv4 principale /28 di indirizzi IP esterni. Questa subnet non può essere utilizzata da altre risorse, come VM, Private Service Connect o bilanciatori del carico.

  • Per creare un connettore in un progetto di servizio che utilizza una rete VPC condivisa in un progetto host, un amministratore di rete per la rete VPC condivisa deve creare manualmente la subnet del connettore prima che tu possa creare il connettore.

  • Per determinare se una subnet esistente creata manualmente può essere utilizzata da un connettore, descrivi la subnet:

    gcloud compute networks subnets describe SUBNET --region=REGION

    Sostituisci SUBNET con il nome della subnet e REGION con la regione che contiene la subnet.

    Nell'output, verifica quanto segue:

    • La subnet è una subnet normale. In Google Cloud CLI, questo significa che il valore di scopo è PRIVATE.
    • L'intervallo di indirizzi IPv4 principale della subnet, ipCidrRange, è un /28.
  • Se devi creare un connettore di accesso VPC serverless nello stesso progetto che contiene rete VPC utilizzata dal connettore, puoi creare manualmente la subnet del connettore prima di creare il connettore oppure Google Cloud può creare automaticamente la subnet per il connettore.

    Quando Google Cloud crea una subnet per un connettore, tieni presente quanto segue:

    • Le sottoreti create automaticamente per i connettori non sono visibili quando elenchi le sottoreti, indipendentemente dall'utilizzo della console Google Cloud, di Google Cloud CLI o dell'API Compute Engine.

    • Le subnet create automaticamente per i connettori non possono essere descritte.

    • Le subnet create automaticamente sono incluse nell'elenco di subnet visualizzato quando descrivi una rete VPC.

Per ulteriori informazioni sulle subnet, inclusa la procedura per elencare quelle esistenti al fine di determinare quali intervalli di indirizzi IP sono già in uso, consulta Utilizzare le subnet.

Limitazioni

Il traffico IPv6 non è supportato.

Crea connettore

Per inviare richieste alla tua rete VPC e ricevere risposte corrispondenti senza utilizzare la rete internet pubblica, puoi utilizzare Connettore di accesso VPC serverless.

Se il connettore si trova nello stesso progetto del rispettivo VPC rete, puoi creare un connettore utilizzando una subnet esistente oppure un connettore e una nuova subnet.

Se il connettore si trova in un progetto di servizio e utilizza una rete VPC condivisa, il connettore e la rete VPC associata si trovano in progetti diversi. Quando un connettore e la relativa rete VPC si trovano in diversi progetti, un amministratore di rete VPC condiviso deve creare del connettore nella rete VPC condiviso prima di poter creare e dovrai crearlo utilizzando una subnet esistente.

Per scoprire di più sui requisiti delle subnet, consulta i requisiti delle subnet dei connettori.

Per informazioni sulla velocità effettiva del connettore, incluso il tipo di macchina e la scalabilità, consulta Velocità effettiva e scalabilità.

Puoi creare un connettore utilizzando la console Google Cloud, Google Cloud CLI o Terraform.

Console

  1. Vai alla pagina di riepilogo Accesso VPC serverless.

    Vai all'accesso VPC serverless

  2. Fai clic su Crea connettore.

  3. Nel campo Nome, inserisci un nome per il connettore che rispetti le convenzioni di denominazione di Compute Engine, con i requisiti aggiuntivi che il nome deve avere meno di 21 caratteri e che i trattini (-) contino come due caratteri.

  4. Nel campo Regione, seleziona una regione per il connettore. Deve corrispondere alla regione del tuo servizio serverless.

    Se il servizio o il job si trova nella regione us-central o europe-west, utilizza us-central1 o europe-west1.

  5. Nel campo Rete, seleziona la rete VPC a cui collegare il connettore.

  6. Nel campo Subnet, seleziona una delle seguenti opzioni:

    • Crea un connettore utilizzando una subnet esistente:seleziona la subnet esistente. nel campo Subnet.

    • Crea un connettore e una nuova subnet: seleziona Intervallo IP personalizzato nel campo Subnet. Poi, inserisci il primo indirizzo in un /28 CIDR non utilizzato (ad esempio 10.8.0.0/28) da utilizzare come intervallo di indirizzi IPv4 primario di una nuova subnet creata da Google Cloud nella rete VPC del connettore. Assicurati che l'intervallo IP non entri in conflitto con eventuali route esistenti nella rete VPC del connettore. Il nome della nuova sottorete inizia con il prefisso "aet-".

  7. (Facoltativo) Per impostare le opzioni di scalabilità per un maggiore controllo Sul connettore, fai clic su Mostra impostazioni di scalabilità per visualizzare in un modulo di testo.

    1. Imposta il numero minimo e massimo di istanze per il connettore. o utilizzare i valori predefiniti, che sono 2 (min) e 10 (max). Il connettore viene scalato fino al valore massimo specificato se l'utilizzo del traffico lo richiede, ma non viene scalato quando il traffico diminuisce. Devi utilizzare valori compresi tra 2 e 10.
    2. Nel menu Tipo di istanza, scegli il tipo di macchina da utilizzare utilizzata per il connettore o il valore predefinito e2-micro. Quando scegli il tipo di istanza, tieni presente la barra laterale dei costi a destra, che mostra le stime di larghezza di banda e costi.
  8. Fai clic su Crea.

  9. Quando il connettore è pronto per l'uso, accanto al nome viene visualizzato un segno di spunta verde.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Aggiorna i componenti di gcloud alla versione più recente:

    gcloud components update
  3. Assicurati che l'API Serverless VPC Access sia abilitata per il tuo progetto:

    gcloud services enable vpcaccess.googleapis.com
  4. Crea il connettore utilizzando una delle seguenti opzioni:

    Per maggiori dettagli e argomenti facoltativi, consulta la documentazione di riferimento di gcloud.

    • Crea un connettore utilizzando una subnet esistente:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --subnet SUBNET_NAME \
       --subnet-project HOST_PROJECT_ID \
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      Sostituisci quanto segue:

      • CONNECTOR_NAME: un nome per il connettore, nome corrispondente di Compute Engine tradizionali, con i requisiti aggiuntivi che il nome deve essere inferiore a 21 e i trattini (-) vengono conteggiati come due caratteri.
      • REGION: una regione per il connettore, corrispondente alla regione del servizio o del job serverless. Se il servizio o il job si trova in us-central o europe-west, utilizza us-central1 o europe-west1.
      • SUBNET_NAME: il nome della subnet esistente.
      • HOST_PROJECT_ID: l'ID progetto dell'host VPC condiviso. Se il connettore e la sottorete esistente si trovano nello stesso progetto, ometti il flag --subnet-project.
      • MIN: il numero minimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 2(valore predefinito) e 9.
      • MAX: il numero massimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 3 e 10 (valore predefinito). Se il connettore fa lo scale up fino al numero massimo di istanze, non esegue lo scale down.
      • MACHINE_TYPE: deve essere uno dei seguenti: f1-micro, e2-micro o e2-standard-4.
    • Crea un connettore e una nuova subnet:

      gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
       --region REGION \
       --network VPC_NETWORK \
       --range IP_RANGE
       --min-instances MIN \
       --max-instances MAX \
       --machine-type MACHINE_TYPE

      Sostituisci quanto segue:

      • CONNECTOR_NAME: un nome per il connettore, corrispondente alle convenzioni di denominazione di Compute Engine, con i requisiti aggiuntivi che il nome deve avere meno di 21 caratteri e che i trattini (-) contino come due caratteri.
      • REGION: una regione per il connettore, corrispondente alla del tuo job o job serverless. Se il servizio o il job si trova in us-central o europe-west, utilizza us-central1 o europe-west1.
      • VPC_NETWORK: il nome del VPC alla rete a cui collegare il connettore. Il connettore e La rete VPC deve trovarsi nello stesso progetto.
      • IP_RANGE: fornisci un CIDR /28 inutilizzato (ad esempio 10.8.0.0/28) da utilizzare come intervallo di indirizzi IPv4 principale di una nuova subnet creata da Google Cloud nella rete VPC del connettore. Assicurati che l'intervallo IP non sia in conflitto con eventuali route esistenti nella rete VPC del connettore. Il nome della nuova sottorete inizia con il prefisso "aet-".
      • MIN: il numero minimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 2 (il valore predefinito) e 9.
      • MAX: il numero massimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 3 e 10 (valore predefinito). Se il connettore fa lo scale up fino al numero massimo di istanze, non esegue lo scale down.
      • MACHINE_TYPE: deve essere uno dei seguenti valori: f1-micro, e2-micro o e2-standard-4.
  5. Verifica che il connettore sia nello stato READY prima di utilizzarlo:

    gcloud compute networks vpc-access connectors describe CONNECTOR_NAME \
    --region REGION

    Sostituisci quanto segue:

    • CONNECTOR_NAME: il nome del connettore, ovvero il nome specificato nel passaggio precedente.
    • REGION: la regione del connettore, ovvero la regione specificata nel passaggio precedente.

    L'output deve contenere la riga state: READY.

Terraform

Puoi utilizzare una risorsa Terraform per abilitare l'API vpcaccess.googleapis.com.

resource "google_project_service" "vpcaccess-api" {
  project = var.project_id # Replace this with your project ID in quotes
  service = "vpcaccess.googleapis.com"
}

Puoi utilizzare i moduli Terraform per creare una rete VPC e una subnet, quindi di rete.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 9.0"
  project_id   = var.project_id # Replace this with your project ID in quotes
  network_name = "my-serverless-network"
  mtu          = 1460

  subnets = [
    {
      subnet_name   = "serverless-subnet"
      subnet_ip     = "10.10.10.0/28"
      subnet_region = "us-central1"
    }
  ]
}

module "serverless-connector" {
  source     = "terraform-google-modules/network/google//modules/vpc-serverless-connector-beta"
  version    = "~> 9.0"
  project_id = var.project_id
  vpc_connectors = [{
    name        = "central-serverless"
    region      = "us-central1"
    subnet_name = module.test-vpc-module.subnets["us-central1/serverless-subnet"].name
    # host_project_id = var.host_project_id # Specify a host_project_id for shared VPC
    machine_type  = "e2-standard-4"
    min_instances = 2
    max_instances = 7
    }
    # Uncomment to specify an ip_cidr_range
    #   , {
    #     name          = "central-serverless2"
    #     region        = "us-central1"
    #     network       = module.test-vpc-module.network_name
    #     ip_cidr_range = "10.10.11.0/28"
    #     subnet_name   = null
    #     machine_type  = "e2-standard-4"
    #     min_instances = 2
    #   max_instances = 7 }
  ]
  depends_on = [
    google_project_service.vpcaccess-api
  ]
}

Configurare l'ambiente serverless per l'utilizzo di un connettore

Dopo aver creato un connettore di accesso VPC serverless, configurare l'ambiente serverless in modo da utilizzare il connettore seguendo istruzioni per il tuo ambiente serverless:

Configura Cloud Run per l'utilizzo di un connettore

Quando crei un nuovo servizio o esegui il deployment di una nuova revisione, puoi configurare il servizio in modo che utilizzi un connettore utilizzando la console Google Cloud, Google Cloud CLI, un file YAML o una risorsa Terraform.

Console

  1. Nella console Google Cloud, vai a Cloud Run:

    Vai a Cloud Run

  2. Fai clic su Esegui il deployment del contenitore e seleziona Servizio per configurare un nuovo servizio. Se stai configurando un servizio esistente, fai clic sul servizio, quindi fai clic su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila il servizio iniziale delle impostazioni, poi fai clic su Container, volumi, networking, sicurezza per espandere di configurazione del servizio.

  4. Fai clic sulla scheda Connessioni.

    immagine

    • Nel campo Connettore VPC, seleziona un connettore da utilizzare o seleziona Nessuno per disconnettere il servizio da una rete VPC.
  5. Fai clic su Crea o Esegui il deployment.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Per specificare un connettore durante il deployment, utilizza il --vpc-connector flag:

    gcloud run deploy SERVICE --image IMAGE_URL --vpc-connector CONNECTOR_NAME
    • Sostituisci SERVICE con il nome del servizio.
    • Sostituisci IMAGE_URL.
    • Sostituisci CONNECTOR_NAME con il nome del tuo di rete. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completo, ad esempio:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è la regione del connettore e CONNECTOR_NAME è il nome che hai assegnato al connettore.

    Per collegare, aggiornare o rimuovere un connettore per un servizio esistente, utilizza il comando gcloud run services update con uno dei seguenti flag, a seconda delle esigenze:

    Ad esempio, per collegare o aggiornare un connettore:

    gcloud run services update SERVICE --vpc-connector CONNECTOR_NAME
    • Sostituisci SERVICE con il nome del tuo servizio.
    • Sostituisci CONNECTOR_NAME con il nome del connettore.

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. Aggiungi o aggiorna l'attributo run.googleapis.com/vpc-access-connector in Attributo annotations sotto l'attributo spec di primo livello:

    apiVersion: serving.knative.dev/v1
    kind: Service
    metadata:
      name: SERVICE
    spec:
      template:
        metadata:
          annotations:
            run.googleapis.com/vpc-access-connector: CONNECTOR_NAME
    • Sostituisci SERVICE con il nome del tuo dal servizio Cloud Run.
    • Sostituisci CONNECTOR_NAME con il nome del connettore. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completo specificato, ad esempio:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è la regione del connettore e CONNECTOR_NAME è il nome assegnato al connettore.
  3. Sostituisci il servizio con la nuova configurazione utilizzando il seguente comando:

    gcloud beta run services replace service.yaml

Terraform

Puoi utilizzare una risorsa Terraform per creare un servizio e configurarlo in modo che utilizzi il tuo connettore.

# Cloud Run service
resource "google_cloud_run_v2_service" "gcr_service" {
  name     = "mygcrservice"
  location = "us-west1"

  deletion_protection = false # set to "true" in production

  template {
    containers {
      image = "us-docker.pkg.dev/cloudrun/container/hello"
      resources {
        limits = {
          cpu    = "1000m"
          memory = "512Mi"
        }
      }
      # the service uses this SA to call other Google Cloud APIs
      # service_account_name = myservice_runtime_sa
    }

    scaling {
      # Limit scale up to prevent any cost blow outs!
      max_instance_count = 5
    }

    vpc_access {
      # Use the VPC Connector
      connector = google_vpc_access_connector.connector.id
      # all egress from the service should go through the VPC Connector
      egress = "ALL_TRAFFIC"
    }
  }
}

Configurare le funzioni Cloud Run per utilizzare un connettore

Puoi configurare una funzione in modo da utilizzare un connettore dalla console Google Cloud oppure in Google Cloud CLI:

Console

  1. Vai alla pagina di riepilogo delle funzioni di Cloud Run nella Console Google Cloud:

    Vai alle funzioni Cloud Run

  2. Fai clic su Crea funzione. In alternativa, fai clic su una funzione esistente per visualizzarne la pagina dei dettagli e poi su Modifica.

  3. Espandi le impostazioni avanzate facendo clic su IMPOSTAZIONI DI RUNTIME, BUILD E CONNESSIONI.

  4. Nella scheda Connessioni in Impostazioni di uscita, inserisci il nome del connettore nel campo Connettore VPC.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Utilizza il comando gcloud functions deploy per eseguire il deployment della funzione e specificare --vpc-connector Segnala:

    gcloud functions deploy FUNCTION_NAME \
    --vpc-connector CONNECTOR_NAME \
    FLAGS...
    

    dove:

    • FUNCTION_NAME è il nome della funzione.
    • CONNECTOR_NAME è il nome del tuo connettore. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere il nome completo, ad esempio:
      projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
      dove HOST_PROJECT_ID è l'ID del progetto host, CONNECTOR_REGION è la regione del connettore e CONNECTOR_NAME è il nome assegnato al connettore.
    • FLAGS... si riferisce ad altri flag che passi durante il deployment delle funzioni.

Per un maggiore controllo sulle richieste instradate tramite il connettore, consulta Impostazioni di uscita.

Configura App Engine per l'utilizzo di un connettore

Python 2

  1. Interrompi l'utilizzo del servizio di recupero dell'URL di App Engine.

    Per impostazione predefinita, tutte le richieste vengono inoltrate tramite il servizio di recupero URL. Di conseguenza, le richieste alla rete VPC non vanno a buon fine. Per disattivare questo valore predefinito, consulta Disattivare il recupero dell'URL per la gestione di tutte le richieste in uscita.

    Se necessario, puoi comunque utilizzare la libreria urlfetch direttamente per le singole richieste, ma questo metodo non è consigliato.

  2. Aggiungi il campo Accesso VPC serverless al file app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID con il tuo ID progetto Google Cloud. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere l'ID del progetto host.
    • REGION con la regione in cui si trova il connettore.
    • CONNECTOR_NAME con il nome del connettore.
  3. Esegui il deployment del servizio:

    gcloud app deploy

    Dopo aver eseguito il deployment del servizio, questo può inviare richieste agli indirizzi IP interni per accedere alle risorse nella rete VPC.

Java 8

  1. Interrompi l'utilizzo del servizio di recupero dell'URL di App Engine URLFetchService.

  2. Aggiungi l'elemento Accesso VPC serverless al file appengine-web.xml del tuo servizio:

    <vpc-access-connector>
    <name>projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME</name>
    </vpc-access-connector>
    

    Sostituisci quanto segue:

    • PROJECT_ID con il tuo ID progetto Google Cloud. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere l'ID del progetto host.
    • REGION con la regione in cui si trova il connettore.
    • CONNECTOR_NAME con il nome del connettore.
  3. Esegui il deployment del servizio:

    gcloud app deploy WEB-INF/appengine-web.xml

    Dopo aver eseguito il deployment del servizio, questo può inviare richieste agli indirizzi IP interni per accedere alle risorse nella rete VPC.

Go 1.11

  1. Interrompi l'utilizzo del servizio di recupero URL di App Engine.

    Accesso VPC serverless non supporta il recupero URL e le richieste effettuate utilizzando il metodo di recupero URL ignoreranno Impostazioni di accesso VPC serverless. Esegui connessioni in uscita con socket.

  2. Aggiungi il campo Accesso VPC serverless al file app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID con il tuo ID progetto Google Cloud
    • REGION con la regione in cui si trova il connettore
    • CONNECTOR_NAME con il nome del connettore
  3. Esegui il deployment del servizio:

    gcloud app deploy

    Dopo aver eseguito il deployment del servizio, il servizio può inviare richieste all'IP interno per accedere alle risorse nella tua rete VPC.

Tutti gli altri runtime

  1. Aggiungi il campo Accesso VPC serverless al file app.yaml:

    vpc_access_connector:
     name: projects/PROJECT_ID/locations/REGION/connectors/CONNECTOR_NAME
    

    Sostituisci quanto segue:

    • PROJECT_ID con il tuo ID progetto Google Cloud. Se il connettore si trova nel progetto host di un VPC condiviso, deve essere l'ID del progetto host.
    • REGION con la regione in cui si trova il connettore.
    • CONNECTOR_NAME con il nome del connettore.
  2. Esegui il deployment del servizio:

    gcloud app deploy

    Dopo aver eseguito il deployment del servizio, questo può inviare richieste agli indirizzi IP interni per accedere alle risorse nella rete VPC.

Configura le regole del firewall per i connettori

Regole firewall obbligatorie per i connettori nei progetti di servizio

Se crei un connettore in una rete VPC autonoma o nel progetto host di una rete VPC condiviso, Google Cloud crea le regole firewall necessarie per il funzionamento del connettore. Per ulteriori informazioni, consulta Regole firewall per i connettori nelle reti VPC autonome o nei progetti host del VPC condiviso.

Tuttavia, se crei un connettore in un progetto di servizio e il connettore ha come target una rete VPC condivisa nel progetto host, devi aggiungere regole del firewall per consentire il traffico necessario per il funzionamento del connettore dai seguenti intervalli:

Questi intervalli vengono utilizzati dall'infrastruttura Google sottostante Cloud Run, funzioni di Cloud Run e ambiente standard di App Engine. Tutte le richieste da che questi indirizzi IP provengono dall'infrastruttura di Google per che ogni risorsa serverless comunica solo con a cui è connesso.

Devi inoltre consentire il traffico dalla subnet del connettore alle risorse nella tua rete VPC.

Per eseguire questi passaggi, devi avere uno dei seguenti ruoli nel progetto ospitante:

Per una configurazione di base, applica le regole per consentire le risorse serverless in qualsiasi progetto di servizio connesso alla rete VPC condiviso per inviare richieste a per qualsiasi risorsa nella rete.

Per applicare queste regole, esegui questi comandi nel progetto host:

  1. Crea regole firewall che consentano le richieste dal server serverless di Google dell'infrastruttura e del controllo di integrità per raggiungere tutti i connettori nel in ogni rete. In questi comandi, le porte UDP e TCP vengono utilizzate come proxy e per e controlli di integrità HTTP. Non modificare le porte specificate.

    gcloud compute firewall-rules create serverless-to-vpc-connector \
        --allow tcp:667,udp:665-666,icmp \
        --source-ranges=35.199.224.0/19 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-to-serverless \
        --allow tcp:667,udp:665-666,icmp \
        --destination-ranges=35.199.224.0/19 \
        --direction=EGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK
    gcloud compute firewall-rules create vpc-connector-health-checks \
        --allow tcp:667 \
        --source-ranges=35.191.0.0/16,35.191.192.0/18,130.211.0.0/22 \
        --direction=INGRESS \
        --target-tags vpc-connector \
        --network=VPC_NETWORK

    Sostituisci VPC_NETWORK con il nome della rete VPC a cui collegare il connettore.

  2. Crea una regola firewall in entrata sulla rete VPC per consentire le richieste provenienti da connettori che hanno come target questa rete:

    gcloud compute firewall-rules create vpc-connector-requests \
        --allow tcp,udp,icmp \
        --direction=INGRESS \
        --source-tags vpc-connector \
        --network=VPC_NETWORK

    Questa regola concede al connettore l'accesso a tutte le risorse nella rete. A limita le risorse che il tuo ambiente serverless può raggiungere utilizzando Accesso VPC serverless, consulta Limita l'accesso delle VM del connettore alle risorse di rete VPC.

Crea regole firewall per connettori specifici

Seguendo la procedura in Regole firewall obbligatorie per i connettori nei progetti di servizio genera regole firewall che si applicano a tutti i connettori, entrambi attuali e quelli creati in futuro. Se non vuoi, ma vuoi invece creare regole solo per connettori specifici, puoi definire l'ambito delle regole in modo che si applichino solo a questi connettori.

Per limitare l'ambito delle regole a connettori specifici, puoi utilizzare una delle i seguenti meccanismi:

  • Tag di rete: ogni connettore ha due tag di rete: vpc-connector e vpc-connector-REGION-CONNECTOR_NAME. Utilizza quest'ultimo formato per limitare l'ambito delle regole firewall a un connettore specifico.
  • Intervalli IP: da utilizzare solo per le regole di uscita, in quanto non funzionano per le regole di ingresso. Puoi utilizzare l'intervallo IP della sottorete del connettore per limitare l'ambito delle regole firewall a un singolo connettore VPC.

Limita l'accesso delle VM del connettore alle risorse di rete VPC

Puoi limitare l'accesso del connettore alle risorse nella rete VPC di destinazione utilizzando le regole del firewall VPC o le regole nelle policy firewall. Puoi farlo delle limitazioni utilizzando una delle seguenti strategie:

  • Crea regole di ingresso i cui target rappresentano le risorse a cui vuoi limitare l'accesso delle VM del connettore e le cui origini rappresentano le VM del connettore.
  • Creare regole in uscita le cui destinazioni rappresentano le VM del connettore Le destinazioni rappresentano le risorse per cui vuoi limitare la VM del connettore a cui accedono.

Gli esempi riportati di seguito illustrano ciascuna strategia.

Limita l'accesso mediante regole in entrata

Scegli tag di rete oppure Intervalli CIDR per controllare il traffico in entrata nella rete VPC.

Tag di rete

I passaggi che seguono mostrano come creare regole di ingresso che limitano l'accesso di un connettore alla rete VPC in base ai tag di rete del connettore.

  1. Assicurati di disporre delle autorizzazioni necessarie per inserire le regole firewall. Devi disporre di uno dei seguenti requisiti: Ruoli di Identity and Access Management (IAM):

  2. Nega il traffico del connettore nella rete VPC.

    Crea una regola firewall in entrata con priorità inferiore a 1000 sulla rete VPC per negare l'ingresso dal tag di rete del connettore. Questa operazione sostituisce la regola firewall implicita creata da Accesso VPC serverless sulla rete VPC per impostazione predefinita.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    Sostituisci quanto segue:

    • RULE_NAME: il nome della nuova regola firewall. Ad esempio, deny-vpc-connector.

    • PROTOCOL: uno o più protocolli che vuoi consentire dal connettore VPC. I protocolli supportati sono tcp o udp. Ad esempio, tcp:80,udp consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, consulta la documentazione relativa al flag allow.

      Per motivi di sicurezza e convalida, puoi anche configurare regole di rifiuto per bloccare il traffico per i seguenti protocolli non supportati: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_NETWORK_TAG: il tag della rete del connettore universale se vuoi limitare l'accesso per tutti i connettori (inclusi eventuali connettori creati in futuro) oppure il tag di rete univoco se vuoi limitare l'accesso per un connettore specifico.

      • Tag di rete universale: vpc-connector
      • Tag di rete univoco: vpc-connector-REGION-CONNECTOR_NAME

        Sostituisci:

        • REGION: la regione del connettore che vuoi limitare
        • CONNECTOR_NAME: il nome del connettore che vuoi limitare

      Per scoprire di più sui tag di rete dei connettori, consulta Tag di rete.

    • VPC_NETWORK: il nome della tua rete VPC

    • PRIORITY: un numero intero compreso tra 0 e 65535. Ad esempio, 0 imposta la priorità più elevata.

  3. Consenti il traffico del connettore alla risorsa che deve ricevere il connettore per via del traffico.

    Utilizza i flag allow e target-tags per creare una regola del firewall di ingresso che abbia come target la risorsa nella rete VPC a cui vuoi che acceda il connettore VPC. Imposta la priorità di questa regola su un valore inferiore rispetto alla priorità della regola creata nel passaggio precedente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-tags=VPC_CONNECTOR_NETWORK_TAG \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

    Sostituisci quanto segue:

    • RULE_NAME: il nome della nuova regola firewall. Ad esempio: allow-vpc-connector-for-select-resources.

    • PROTOCOL: uno o più protocolli che vuoi consentire dal connettore VPC. I protocolli supportati sono tcp o udp. Ad esempio, tcp:80,udp consente il traffico TCP tramite la porta 80 e il traffico UDP. Per ulteriori informazioni, vedi la documentazione per allow flag.

    • VPC_CONNECTOR_NETWORK_TAG: il tag della rete del connettore universale se vuoi limitare l'accesso per tutti i connettori (inclusi eventuali connettori creati in futuro) oppure il tag di rete univoco se vuoi limitare l'accesso per un connettore specifico. Deve corrispondere alla rete specificato nel passaggio precedente.

      • Tag di rete universale: vpc-connector
      • Tag di rete univoco: vpc-connector-REGION-CONNECTOR_NAME

        Sostituisci:

        • REGION: la regione del connettore che vuoi limitare
        • CONNECTOR_NAME: il nome del connettore che vuoi limitare

      Per scoprire di più sui tag di rete dei connettori, consulta Tag di rete.

    • VPC_NETWORK: il nome della rete VPC

    • RESOURCE_TAG: il tag di rete per il VPC risorsa a cui vuoi che il connettore VPC acceda

    • PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se hai impostato la priorità della regola creata nel passaggio precedente su 990, prova 980.

Per ulteriori informazioni sugli indicatori obbligatori e facoltativi per la creazione di regole firewall, consulta la documentazione di gcloud compute firewall-rules create.

Intervallo CIDR

I passaggi che seguono mostrano come creare regole di ingresso che limitano l'accesso di un connettore alla rete VPC in base all'intervallo CIDR del connettore.

  1. Assicurati di disporre delle autorizzazioni necessarie per inserire le regole firewall. Devi disporre di uno dei seguenti requisiti: Ruoli di Identity and Access Management (IAM):

  2. Nega il traffico del connettore nella rete VPC.

    Crea una regola firewall in entrata con priorità inferiore a 1000 sul tuo Rete VPC per negare il traffico in entrata dal CIDR del connettore intervallo. Questo sostituisce la regola firewall implicita L'accesso VPC serverless crea sul tuo VPC per impostazione predefinita.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    Sostituisci quanto segue:

    • RULE_NAME: il nome della nuova regola firewall. Ad esempio, deny-vpc-connector.

    • PROTOCOL: uno o più protocolli che vuoi consentire dal connettore VPC. I protocolli supportati sono tcp o udp. Ad esempio, tcp:80,udp consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, vedi la documentazione per allow flag.

      Per motivi di sicurezza e convalida, puoi anche configura regole di negazione per bloccare il traffico per i seguenti elementi non supportati protocolli: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_CIDR_RANGE: l'intervallo CIDR per il connettore di cui stai limitando l'accesso

    • VPC_NETWORK: il nome della tua rete VPC

    • PRIORITY: un numero intero compreso tra 0 e 65535. Ad esempio, 0 imposta la priorità più elevata.

  3. Consenti il traffico del connettore alla risorsa che deve ricevere il connettore per via del traffico.

    Utilizza i flag allow e target-tags per creare una regola del firewall di ingresso che abbia come target la risorsa nella rete VPC a cui vuoi che acceda il connettore VPC. Imposta la priorità di questa regola su un valore inferiore rispetto alla priorità della regola creata nel passaggio precedente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --source-ranges=VPC_CONNECTOR_CIDR_RANGE \
    --direction=INGRESS \
    --network=VPC_NETWORK \
    --target-tags=RESOURCE_TAG \
    --priority=PRIORITY

    Sostituisci quanto segue:

    • RULE_NAME: il nome della nuova regola firewall. Ad esempio: allow-vpc-connector-for-select-resources.

    • PROTOCOL: uno o più protocolli che vuoi consentire dal tuo connettore VPC. I protocolli supportati sono tcp o udp. Ad esempio, tcp:80,udp consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, vedi la documentazione per allow flag.

    • VPC_CONNECTOR_CIDR_RANGE: l'intervallo CIDR per il connettore l'utente di cui stai limitando l'accesso

    • VPC_NETWORK: il nome della tua rete VPC

    • RESOURCE_TAG: il tag di rete per il VPC risorsa a cui vuoi che il connettore VPC acceda

    • PRIORITY: un numero intero inferiore alla priorità impostata al passaggio precedente. Ad esempio, se imposti la priorità per la regola che hai creato nel passaggio precedente a 990, prova a 980.

Per ulteriori informazioni sui flag obbligatori e facoltativi per la creazione regole firewall, consulta le documentazione relativa a gcloud compute firewall-rules create.

Limitare l'accesso utilizzando le regole di uscita

I passaggi seguenti mostrano come creare regole di traffico in uscita per limitare l'accesso ai connettori.

  1. Assicurati di disporre delle autorizzazioni necessarie per inserire le regole del firewall. Tu deve disporre di uno dei seguenti requisiti per Identity and Access Management (IAM) ruoli:

  2. Nega il traffico in uscita dal connettore.

    Crea una regola firewall in uscita sull'accesso VPC serverless per impedirgli di inviare traffico in uscita, ad eccezione del e prestabilite, in qualsiasi destinazione.

    gcloud compute firewall-rules create RULE_NAME \
    --action=DENY \
    --rules=PROTOCOL \
    --direction=EGRESS \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --network=VPC_NETWORK \
    --priority=PRIORITY

    Sostituisci quanto segue:

    • RULE_NAME: il nome della nuova regola firewall. Ad esempio, deny-vpc-connector.

    • PROTOCOL: uno o più protocolli che vuoi consentire dal connettore VPC. I protocolli supportati sono tcp o udp. Ad esempio, tcp:80,udp consente il traffico TCP attraverso la porta 80 e il traffico UDP. Per ulteriori informazioni, vedi la documentazione per allow flag.

      Per motivi di sicurezza e convalida, puoi anche configurare regole di rifiuto per bloccare il traffico per i seguenti protocolli non supportati: ah, all, esp, icmp, ipip e sctp.

    • VPC_CONNECTOR_NETWORK_TAG: il VPC universale tag di rete del connettore se desideri applicare la regola a tutte le istanze Connettori VPC ed eventuali connettori VPC creati in futuro. Oppure, il tag di rete univoco del connettore VPC per controllare un connettore specifico.

    • VPC_NETWORK: il nome della tua rete VPC

    • PRIORITY: un numero intero compreso tra 0 e 65535. Ad esempio, 0 imposta la priorità più elevata.

  3. Consenti il traffico in uscita quando la destinazione è nell'intervallo CIDR a cui vuoi che acceda il connettore.

    Utilizza i flag allow e destination-ranges per creare una regola firewall consentendo il traffico in uscita dal connettore per un intervallo di destinazione specifico. Imposta l'intervallo di destinazione sull'intervallo CIDR della risorsa nella rete VPC a cui vuoi che il connettore possa accedere. Imposta la priorità di questa regola su un valore inferiore a quello della regola creata nel passaggio precedente.

    gcloud compute firewall-rules create RULE_NAME \
    --allow=PROTOCOL \
    --destination-ranges=RESOURCE_CIDR_RANGE \
    --direction=EGRESS \
    --network=VPC_NETWORK \
    --target-tags=VPC_CONNECTOR_NETWORK_TAG \
    --priority=PRIORITY

    Sostituisci quanto segue:

    • RULE_NAME: il nome della nuova regola firewall. Ad esempio: allow-vpc-connector-for-select-resources.

    • PROTOCOL: uno o più protocolli che vuoi consentire dal connettore VPC. I protocolli supportati sono tcp o udp. Ad esempio, tcp:80,udp consente il traffico TCP tramite la porta 80 e il traffico UDP. Per ulteriori informazioni, consulta la documentazione relativa al flag allow.

    • RESOURCE_CIDR_RANGE: l'intervallo CIDR per il connettore di cui stai limitandone l'accesso

    • VPC_NETWORK: il nome della tua rete VPC

    • VPC_CONNECTOR_NETWORK_TAG: il tag di rete del connettore VPC universale se vuoi che la regola venga applicata a tutti i connettori VPC esistenti e a eventuali connettori VPC creati in futuro. Oppure, il tag di rete univoco del connettore VPC per controllare un connettore specifico. Se hai utilizzato il tag rete univoco nel passaggio precedente, utilizza il tag rete univoco.

    • PRIORITY: un numero intero inferiore alla priorità impostata nel passaggio precedente. Ad esempio, se hai impostato la priorità della regola creata nel passaggio precedente su 990, prova 980.

Per ulteriori informazioni sugli indicatori obbligatori e facoltativi per la creazione di regole firewall, consulta la documentazione di gcloud compute firewall-rules create.

Aggiornare un connettore

Puoi aggiornare e monitorare i seguenti attributi del connettore utilizzando la console Google Cloud, Google Cloud CLI o l'API:

  • Tipo di macchina (istanza)
  • Numero minimo e massimo di istanze
  • Velocità effettiva recente, numero di istanze e utilizzo della CPU

Aggiorna tipo di macchina

Console

  1. Vai alla pagina di riepilogo Accesso VPC serverless.

    Vai ad Accesso VPC serverless

  2. Seleziona il connettore da modificare e fai clic su Modifica.

  3. Nell'elenco Tipo di istanza, seleziona il tipo di macchina (istanza) preferito. Per saperne di più sui tipi di macchina disponibili, consulta la documentazione Velocità effettiva e scalabilità.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Per aggiornare il tipo di macchina del connettore, esegui questo comando terminale:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --machine-type=MACHINE_TYPE
    Sostituisci quanto segue:

    • CONNECTOR_NAME: il nome del connettore
    • REGION: il nome della regione del connettore
    • MACHINE_TYPE: il tipo di macchina che preferisci. Per informazioni sui tipi di macchine disponibili, consulta la documentazione su Throughput e scalabilità.

Riduci il numero minimo e massimo di istanze

Per ridurre il numero minimo e massimo di istanze, devi svolgere quanto segue:

  1. Crea un nuovo connettore con i valori che preferisci.
  2. Aggiorna il servizio o la funzione per utilizzare il nuovo connettore.
  3. Elimina il vecchio connettore dopo aver spostato il relativo traffico.

Consulta Creare un connettore di accesso VPC serverless per ulteriori informazioni.

Aumenta il numero minimo e massimo di istanze

Console

  1. Vai alla pagina di riepilogo Accesso VPC serverless.

    Vai all'accesso VPC serverless

  2. Seleziona il connettore da modificare e fai clic su Modifica.

  3. Nel campo Istanze minime, seleziona il numero minimo di istanze che preferisci.

    Il valore più piccolo possibile per questo campo è il valore corrente. Il valore possibile più elevato per questo campo è il valore corrente nel campo Istanze massime meno 1. Ad esempio, se il valore nel Numero massimo di istanze è 8, il valore più grande possibile per il Numero minimo di istanze è 7.

  4. Nel campo Istanze massime, seleziona il numero massimo di istanze preferito.

    Il valore più piccolo possibile per questo campo è il valore corrente. Il valore massimo possibile per questo campo è 10.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Per aumentare il numero minimo o massimo di istanze per il connettore, esegui il seguente comando nel terminale:

    gcloud beta compute networks vpc-access connectors update CONNECTOR_NAME --region=REGION --min-instances=MIN_INSTANCES --max-instances=MAX_INSTANCES
    Sostituisci quanto segue:

  • CONNECTOR_NAME: il nome del tuo connettore
  • REGION: il nome della regione del connettore
  • MIN_INSTANCES: il numero minimo di istanze preferito.
    • Il valore più piccolo possibile per questo campo è il valore corrente di min_instances. Per trovare il valore corrente, consulta Trovare i valori degli attributi correnti.
    • Il valore massimo possibile per questo campo è il valore max_instances corrente meno 1, perché min_instances deve essere inferiore a max_instances. Ad esempio, se max_instances è 8, il valore più grande possibile è 7. Se il connettore utilizza il valore predefinito max-instances di 10, il valore massimo possibile di questo campo è 9. Per trovare il valore di max-instances, consulta Trovare i valori degli attributi correnti.
  • MAX_INSTANCES:

    • Il valore più piccolo possibile per questo campo è il valore corrente max_instances. Per trovare il valore corrente, consulta Trova i valori degli attributi correnti.
    • Il valore massimo possibile per questo campo è 10.

    Se vuoi aumentare solo il numero minimo di istanze, ma non il numero massimo, devi comunque specificare il numero massimo di istanze. Al contrario, se vuoi aggiornare solo il numero massimo di istanze non è il numero minimo, devi comunque specificare il numero minimo di istanze. Per mantenere invariato il numero minimo o massimo di istanze, specifica il valore corrente. Per trovare il valore corrente, consulta Trovare i valori degli attributi attuali.

Trovare i valori degli attributi correnti

Per trovare i valori degli attributi attuali per il connettore, esegui quanto segue nel terminale:

gcloud compute networks vpc-access connectors describe CONNECTOR_NAME --region=REGION --project=PROJECT
Sostituisci quanto segue:

  • CONNECTOR_NAME: il nome del tuo connettore
  • REGION: il nome della regione del connettore
  • PROJECT: il nome del tuo progetto Google Cloud

Monitorare l'utilizzo del connettore

Monitorare l'utilizzo nel tempo può aiutarti a determinare quando modificare le impostazioni di un connettore. Ad esempio, se si verificano picchi di utilizzo della CPU, potresti provare ad aumentare il numero massimo di istanze per ottenere risultati migliori. O se stai raggiungendo il limite effettiva, potresti decidere di passare a un tipo di macchina più grande.

Visualizzare i grafici relativi a velocità effettiva, numero di istanze e CPU del connettore di utilizzo delle metriche nel tempo usando la console Google Cloud:

  1. Vai alla pagina di riepilogo Accesso VPC serverless.

    Vai all'accesso VPC serverless

  2. Fai clic sul nome del connettore che vuoi monitorare.

  3. Seleziona il numero di giorni da visualizzare tra 1 e 90 giorni.

  4. Nel grafico Velocità effettiva, passa il mouse sopra il grafico per visualizzare con una velocità effettiva recente.

  5. Nel grafico Numero di istanze, passa il mouse sopra il grafico per visualizzare il numero di istanze utilizzate di recente dal connettore.

  6. Nel grafico Utilizzo della CPU, passa il mouse sopra il grafico per visualizzare l'utilizzo della CPU recente del connettore. Il grafico mostra l'utilizzo della CPU distribuito tra le istanze per i percentile 50, 95 e 99.

Elimina un connettore

Prima di eliminare un connettore, assicurati che nessun servizio o job sia ancora a essa connesso.

Per gli utenti del VPC condiviso che configurano i connettori nella rete VPC condivisa progetto host, puoi utilizzare il comando gcloud compute networks vpc-access connectors describe per elencare i progetti in cui sono presenti servizi o job che utilizzano di rete.

Per eliminare un connettore, utilizza la console Google Cloud o Google Cloud CLI:

Console

  1. Vai alla pagina di panoramica di Accesso VPC serverless nella console Google Cloud:

    Vai all'accesso VPC serverless

  2. Seleziona il connettore da eliminare.

  3. Fai clic su Elimina.

gcloud

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Utilizza il seguente comando gcloud per eliminare un connettore:

    gcloud compute networks vpc-access connectors delete CONNECTOR_NAME --region=REGION
    

    Sostituisci quanto segue:

    • CONNECTOR_NAME con il nome del connettore da eliminare
    • REGION con la regione in cui si trova il connettore

Configura il tuo ambiente Cloud Run per utilizzare il VPC diretto anziché un connettore

Puoi attivare il servizio Cloud Run per inviare il traffico in uscita direttamente a una rete VPC, consentendo l'accesso alle istanze VM Compute Engine, alle istanze Memorystore e a qualsiasi altra risorsa con un indirizzo IP interno.

Configurare il servizio per utilizzare il VPC diretto

Il traffico VPC diretto in uscita consente al servizio Cloud Run di inviare traffico a una rete VPC senza accesso VPC serverless di rete. I costi di rete si riducono a zero, proprio come il servizio stesso. Puoi anche aggiungere tag di rete direttamente nelle revisioni del servizio Cloud Run per una sicurezza di rete più granulare, ad esempio applicando regole del firewall VPC.

Puoi configurare l'egress diretto della VPC con un servizio utilizzando la console Google 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 destinazione del deployment. Se stai configurando ed eseguendo il deployment di un servizio esistente, fai clic sul servizio, quindi su Modifica ed esegui il deployment di una nuova revisione.

  3. Se stai configurando un nuovo servizio, compila il servizio iniziale pagina delle impostazioni in base alle tue esigenze, poi fai clic su Container, volumi, networking, sicurezza per espandi 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 il VPC rete a cui vuoi inviare il traffico.

  8. Nel campo Subnet, seleziona la subnet alla quale il tuo servizio riceve IP . Puoi eseguire il deployment di più servizi sulla 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 a livello di revisione. Ogni revisione del servizio può avere diversi tag di rete, 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 trafico agli indirizzi interni tramite la rete VPC.
    • Instrada tutto il traffico al VPC per inviare tutto il traffico in uscita attraverso la rete VPC.
  11. Fai clic su Crea o Esegui il deployment.

  12. 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 dal firewall le regole del caso.

gcloud

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

  1. Aggiorna i componenti di gcloud alla versione più recente:

    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 il seguente 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 servizio Cloud Run.
    • IMAGE_URL con un riferimento all'immagine container, per 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 del tuo VPC in ogni rete.
    • SUBNET con il nome della tua subnet. La subnet deve essere di almeno /26. L'egress VPC diretto supporta gli intervalli IPv4 RFC 1918, RFC 6598 e Class E. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet, ma la subnet non può essere condivisa da connettori esistenti.
    • (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 a livello di revisione. Ogni revisione del servizio può avere diversi tag di rete, ad esempio network-tag-2.
    • EGRESS_SETTING con un valore impostazione in uscita:
      • all-traffic: invia tutto il traffico in uscita attraverso il VPC in ogni rete.
      • private-ranges-only: invia solo traffico agli indirizzi interni tramite la rete VPC.
    • REGION con una regione per il tuo servizio.
  4. Per verificare che il servizio si trovi nella 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 del servizio specificata nel passaggio precedente.

    L'output deve contenere il nome della rete, della subnet e del traffico dell'impostazione, 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 dal firewall le regole del caso.

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 servizio Cloud Run. I nomi dei servizi devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto.
    • REGION con la regione del servizio Cloud Run, che deve corrispondere alla regione della sottorete.
    • NETWORK con il nome della rete VPC.
    • SUBNET con il nome della subnet. La subnet deve essere /26 o più grande. L'egress VPC diretto supporta gli intervalli IPv4 RFC 1918, RFC 6598 e Class E. Puoi eseguire il deployment o l'esecuzione di più servizi o job nella stessa subnet, ma la subnet non può essere condivisa da connettori esistenti.
    • (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 diversi tag di rete, ad esempio network-tag-2.
    • EGRESS_SETTING con un valore dell'impostazione di uscita:
      • all-traffic: invia tutto il traffico in uscita tramite la rete VPC.
      • private-ranges-only: invia il traffico solo agli indirizzi interni attraverso la rete VPC.
    • IMAGE con l'URL dell'immagine del container di servizio.

    Puoi anche specificare altre 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"]
          }
        }
      }
    }
    

(Facoltativo) Rendi pubblico il servizio se consentire l'accesso non autenticato al servizio.

Configurare il job per utilizzare il VPC diretto

L'uscita VPC diretta consente al tuo job Cloud Run di inviare traffico a una rete VPC senza un connettore di accesso VPC serverless. Puoi anche aggiungere tag di rete direttamente sui job Cloud Run per una sicurezza di rete più granulare, come applicando le regole firewall VPC.

Puoi configurare l'uscita diretta VPC con un job utilizzando la console Google 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 tue esigenze. Se stai configurando un job esistente, fai clic sul job e poi su Modifica.

  3. Fai clic su Contenitore, variabili e Secret, connessioni, sicurezza a espandi 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 alla quale il tuo job riceve 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 trafico agli indirizzi interni tramite la rete VPC.
    • Instrada tutto il traffico al VPC per inviare tutto il traffico in uscita attraverso 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 a livello di revisione. Ogni revisione del servizio può avere tag di rete, 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 a livello di esecuzione. Ogni esecuzione del job può avere diversi tag di rete, 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 e poi sulla scheda Configurazione. La rete e la subnet sono elencato nella scheda VPC.

    Ora puoi eseguire il tuo job Cloud Run e inviare richieste dal job a qualsiasi risorsa sulla rete VPC, come consentito dalle regole del firewall.

gcloud

Per creare un job Cloud Run senza un connettore da Google Cloud CLI:

  1. Aggiorna i componenti di gcloud alla versione più recente:

    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, per esempio, us-docker.pkg.dev/cloudrun/container/job:latest
    • NETWORK con il nome del tuo VPC in ogni rete.
    • SUBNET con il nome della subnet. La subnet deve essere di almeno /26. L'egress VPC diretto supporta gli intervalli IPv4 RFC 1918, RFC 6598 e Class E. Puoi eseguire il deployment o eseguire più servizi o job sulla stessa ma non può essere condivisa da nessuno dei connettori esistenti.
    • Facoltativo: NETWORK_TAG_NAMES con i nomi dei tag di rete da associare a un job. Per i job, i tag di rete a livello di esecuzione. Ogni esecuzione del job può avere tag di rete diversi, ad esempio network-tag-2.
    • EGRESS_SETTING con un valore dell'impostazione di uscita:
      • all-traffic: invia tutto il traffico in uscita attraverso il VPC in ogni rete.
      • private-ranges-only: invia il traffico solo agli indirizzi interni attraverso la rete VPC.
    • REGION con una regione per il job.
  4. Per verificare che il job si trovi nella tua rete VPC, esegui seguente comando:

    gcloud run jobs describe JOB_NAME \
      --region=REGION
      

    Sostituisci:

    • JOB_NAME con il nome del tuo job.
    • REGION con la regione per il tuo job specificata nel passaggio precedente.

    L'output deve contenere il nome della rete e della subnet, esempio:

    VPC network:
      Network:       default
      Subnet:        default
    

Ora puoi eseguire il tuo job Cloud Run e inviare richieste dal su qualsiasi risorsa sulla rete VPC, come consentito le regole del 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
        annotations:
          run.googleapis.com/launch-stage: BETA
        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 Cloud Run un lavoro. I nomi dei job devono avere una lunghezza massima di 49 caratteri e devono essere univoci per regione e progetto.
    • REGION con la regione per il tuo job Cloud Run, che deve corrispondere alla regione della subnet.
    • NETWORK con il nome della tua rete VPC.
    • SUBNET con il nome della subnet. La subnet deve essere /26 o più grande. Il traffico VPC diretto in uscita supporta gli intervalli IPv4 RFC 1918, RFC 6598, e Classe E. Puoi eseguire il deployment o eseguire più servizi o job sulla stessa ma non può essere condivisa da nessuno dei connettori esistenti.
    • Facoltativo: NETWORK_TAG_NAMES con i nomi dei tag di rete da 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 impostazione in uscita:
      • all-traffic: invia tutto il traffico in uscita tramite la rete VPC.
      • private-ranges-only: invia il traffico solo agli indirizzi interni attraverso la rete VPC.
    • IMAGE con l'URL dell'immagine del container del job.
  3. Crea o aggiorna il job utilizzando il comando seguente:

    gcloud run jobs replace job.yaml

Risoluzione dei problemi

Autorizzazioni account di servizio

Per eseguire operazioni nel progetto Google Cloud, Accesso VPC serverless utilizza l'account di servizio Agente di servizio Accesso VPC serverless. Questo servizio l'indirizzo email dell'account ha il seguente formato:

service-PROJECT_NUMBER@gcp-sa-vpcaccess.iam.gserviceaccount.com

Per impostazione predefinita, questo account di servizio dispone del ruolo Agente di servizio di accesso VPC serverless (roles/vpcaccess.serviceAgent). Le operazioni di accesso VPC serverless potrebbero non riuscire se modifichi le autorizzazioni di questo account.

Prestazioni di rete scadenti o utilizzo elevato della CPU inattiva

L'utilizzo di un singolo connettore per migliaia di istanze può causare prestazioni il peggioramento e l'aumento dell'utilizzo della CPU inattiva. Per risolvere il problema, suddividi i servizi tra più connettori.

Errori

Errore: all'account di servizio serve il ruolo Agente di servizio

Se usi l'opzione Limita l'utilizzo del servizio risorse vincolo dei criteri dell'organizzazione per bloccare Cloud Deployment Manager (deploymentmanager.googleapis.com), potrebbe essere visualizzato il seguente messaggio di errore:

Serverless VPC Access service account (service-<PROJECT_NUMBER>@gcp-sa-vpcaccess.iam.gserviceaccount.com) needs Serverless VPC Access Service Agent role in the project.

Imposta il criterio dell'organizzazione per rimuovere Deployment Manager dalla lista di blocco o aggiungerlo alla lista consentita.

Errore di creazione del connettore

Se la creazione di un connettore genera un errore, prova a procedere nel seguente modo:

  • Specifica una specifica RFC 1918 intervallo IP interno che non si sovrappone ad alcun indirizzo IP esistente delle tue risorse nella rete VPC.
  • Concedi al tuo progetto l'autorizzazione a utilizzare le immagini VM di Compute Engine dal progetto con ID serverless-vpc-access-images. Per saperne di più su come aggiornare di conseguenza i criteri dell'organizzazione, consulta Impostare limitazioni di accesso alle immagini.

Impossibile accedere alle risorse

Se hai specificato un connettore, ma non riesci comunque ad accedere alle risorse nel tuo rete VPC, assicurati che non siano presenti regole firewall Rete VPC con priorità inferiore a 1000 che nega il traffico in entrata dall'intervallo di indirizzi IP del tuo connettore.

Se configuri un connettore in un progetto di servizio VPC condiviso, assicurati che le regole del firewall consentano l'ingresso dall'infrastruttura serverless al connettore.

Errore di connessione rifiutata

Se ricevi connection refused o connection timeout errori che si riducono le prestazioni della rete, le tue connessioni potrebbero crescere senza limiti delle tue applicazioni serverless. Per limitare il numero massimo di usate per istanza, usa una libreria client che supporti la connessione piscine. Per esempi dettagliati su come utilizzare i pool di connessioni, consulta Gestire le connessioni ai database.

Errore di risorsa non trovata

Quando elimini una rete VPC o una regola firewall, potresti visualizzare un messaggio simile al seguente: The resource "aet-uscentral1-subnet--1-egrfw" was not found.

Per informazioni su questo errore e sulla relativa soluzione, consulta Errore: risorsa non trovata nella documentazione delle regole firewall VPC.

Passaggi successivi