Configura i connettori nell'host del VPC condiviso progetto

Se la tua organizzazione utilizza un VPC condiviso, puoi configurare Connettori di accesso VPC serverless nel progetto di servizio progetto host. Questa guida mostra come configurare un connettore nel progetto host.

Se devi configurare un connettore in un progetto di servizio, consulta Configurare i connettori nei progetti di servizio. Per conoscere i vantaggi di ciascun metodo, consulta Connessione a una VPC condiviso condivisa

Prima di iniziare

  1. Verifica i ruoli di Identity and Access Management (IAM) per l'account che stai attualmente utilizzando. L'account attivo deve avere i seguenti ruoli sul progetto host:

  2. Seleziona il progetto host nell'ambiente che preferisci.

Console

  1. Apri la dashboard della console Google Cloud.

    Vai alla dashboard della console Google Cloud

  2. Nella barra dei menu nella parte superiore della dashboard, fai clic sul menu a discesa del progetto e seleziona il progetto host.

gcloud

Imposta il progetto predefinito in gcloud CLI sul progetto host esegui questo comando nel tuo terminale:

gcloud config set project HOST_PROJECT_ID

Sostituisci quanto segue:

  • HOST_PROJECT_ID: l'ID del VPC condiviso progetto host

Crea un connettore di accesso VPC serverless

Per inviare richieste alla tua rete VPC e ricevere le risposte corrispondenti, devi creare un connettore di accesso VPC serverless. Puoi creare un connettore utilizzando la console Google Cloud, Google Cloud CLI, o Terraform:

Console

  1. Abilita l'API Serverless VPC Access per il tuo progetto.

    Attiva l'API

  2. Vai alla pagina di riepilogo Accesso VPC serverless.

    Vai ad Accesso VPC serverless

  3. Fai clic su Crea connettore.

  4. Nel campo Nome, inserisci un nome per il connettore. Il nome deve rispettare la convezione di denominazione di Compute Engine e deve contenere meno di 21 caratteri. I trattini (-) vengono conteggiati come due caratteri.

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

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

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

  7. Fai clic sul menu a discesa Subnet:

    Seleziona una subnet /28 inutilizzata.

    • Le subnet devono essere utilizzate esclusivamente dal connettore. Non possono essere utilizzati da altre risorse come VM, Private Service Connect o bilanciatori del carico.
    • Per verificare che la sottorete non sia utilizzata per Private Service Connect o il bilanciamento del carico Cloud, controlla che la sottorete purpose sia PRIVATE eseguendo il seguente comando in gcloud CLI:
      gcloud compute networks subnets describe SUBNET_NAME
      
      Sostituisci SUBNET_NAME con il nome della subnet.
  8. (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 oppure utilizza i valori predefiniti, ovvero 2 (min) e 10 (max). La fa lo scale out del connettore al massimo specificato man mano che il traffico aumenta, ma il connettore non ridimensiona quando il traffico diminuisce. Tu deve utilizzare valori compresi tra 2 e 10 e Il valore MIN deve essere inferiore a MAX valore.
    2. Nel menu a discesa Tipo di istanza, scegli il tipo di macchina da utilizzare per il connettore o utilizza il valore predefinito e2-micro. Quando scegli il tipo di istanza, noterai la barra laterale dei costi sulla destra, che mostra le stime di larghezza di banda e costi.
  9. Fai clic su Crea.

  10. Un segno di spunta verde verrà visualizzato accanto al nome del connettore quando pronto per l'uso.

gcloud

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

    gcloud components update
    
  2. Abilita l'API Serverless VPC Access per il tuo progetto:

    gcloud services enable vpcaccess.googleapis.com
    
  3. Crea un connettore di accesso VPC serverless:

    gcloud compute networks vpc-access connectors create CONNECTOR_NAME \
    --region=REGION \
    --subnet=SUBNET \
    --subnet-project=HOST_PROJECT_ID \
    # Optional: specify minimum and maximum instance values between 2 and 10, default is 2 min, 10 max.
    --min-instances=MIN \
    --max-instances=MAX \
    # Optional: specify machine type, default is e2-micro
    --machine-type=MACHINE_TYPE

    Sostituisci quanto segue:

    • CONNECTOR_NAME: un nome per il connettore. Il nome devono rispettare le Compute Engine convenzione di denominazione e avere meno di 21 caratteri. I trattini (-) vengono conteggiati come due caratteri.
    • REGION: una regione per il connettore. Deve corrispondere alla regione del servizio serverless. Se il tuo servizio si trova nella regione us-central o europe-west, utilizza us-central1 o europe-west1.
    • SUBNET: il nome di una subnet /28 non utilizzata.
      • Le subnet devono essere utilizzate esclusivamente dal connettore. Non possono essere utilizzati da altre risorse come VM, Private Service Connect o bilanciatori del carico.
      • Per verificare che la sottorete non sia utilizzata per Private Service Connect o Cloud Load Balancing, controlla che la sottorete purpose sia PRIVATE eseguendo il seguente comando in gcloud CLI:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Sostituisci quanto segue:
        • SUBNET_NAME: il nome della subnet
    • HOST_PROJECT_ID: l'ID del progetto host
    • MIN: il numero minimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 2 e 9. Il valore predefinito è 2. Per informazioni sulla scalabilità dei connettori, consulta Throughput e scalabilità.
    • MAX: il numero massimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 3 e 10. Il valore predefinito è 10. Se il traffico lo richiede, il connettore esegue lo scale out fino a [MAX] istanze, ma non lo scale out. Per informazioni sulla scalabilità dei connettori, consulta Throughput e scalabilità.
    • MACHINE_TYPE: f1-micro, e2-micro o e2-standard-4. Per saperne di più sulla velocità effettiva del connettore, inclusi il tipo di macchina e la scalabilità, consulta Velocità effettiva e scalabilità.

    Per maggiori dettagli e argomenti facoltativi, consulta le informazioni di riferimento su gcloud.

  4. Prima di utilizzarlo, verifica che il connettore sia nello stato READY:

    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, 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
  ]
}

Abilita le funzioni di Cloud Run per il progetto di servizio

Abilita l'API Cloud Functions per il progetto di servizio. Questo è necessario per aggiungere i ruoli IAM nei passaggi successivi e per consentire al progetto di servizio di utilizzare le funzioni Cloud Run.

Console

  1. Apri la pagina dell'API Cloud Run Functions.

    API Funzioni Cloud Run

  2. Nella barra dei menu in alto nella dashboard, fai clic sul menu a discesa del progetto e seleziona il progetto di servizio.

  3. Fai clic su Attiva.

gcloud

Esegui il comando seguente nel terminale:

gcloud services enable cloudfunctions.googleapis.com --project=SERVICE_PROJECT_ID

Sostituisci quanto segue:

  • SERVICE_PROJECT_ID: l'ID del progetto di servizio

Fornire l'accesso al connettore

Fornisci l'accesso al connettore concedendo il ruolo IAM Agente di servizio delle funzioni Cloud Run Utente di accesso VPC serverless al progetto di servizio nel progetto host. Devi concedere lo stesso ruolo anche all'agente di servizio Cloud Run.

Console

  1. Apri la pagina IAM.

    Vai a IAM

  2. Fai clic sul menu a discesa del progetto e seleziona il progetto host.

  3. Fai clic su Concedi accesso.

  4. Nel campo Nuove entità, inserisci l'indirizzo email dell'agente di servizio delle funzioni Cloud Run per il progetto di servizio:

    service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com

    Sostituisci quanto segue:

    • SERVICE_PROJECT_NUMBER: il numero del progetto associato al progetto di servizio. È diverso dall'ID progetto. Puoi trovare il numero di progetto nella pagina Impostazioni progetto del progetto di servizio nella console Google Cloud.
  5. Nel campo Nuove entità, inserisci anche l'indirizzo email dell'agente di servizio Cloud Run per il progetto di servizio:

    service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com

  6. Nel campo Ruolo, seleziona Utente con accesso VPC serverless.

  7. Fai clic su Salva.

gcloud

  1. Esegui questo comando nel tuo terminale:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@gcf-admin-robot.iam.gserviceaccount.com \
    --role=roles/vpcaccess.user
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host VPC condiviso
    • SERVICE_PROJECT_NUMBER: il numero del progetto associati al progetto di servizio. È diverso dal progetto ID. Puoi trovare il numero del progetto eseguendo questo comando:

      gcloud projects describe SERVICE_PROJECT_ID
      
  2. Concedi il ruolo anche all'agente di servizio Cloud Run eseguendo il seguente comando:

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member=serviceAccount:service-SERVICE_PROJECT_NUMBER@serverless-robot-prod.iam.gserviceaccount.com \
    --role=roles/vpcaccess.user
    

Rendi rilevabile il connettore

Nel criterio IAM del progetto host, devi concedere i due ruoli predefiniti seguenti alle entità che eseguono il deployment dei servizi Cloud Run:

In alternativa, puoi utilizzare ruoli personalizzati o altri ruoli predefiniti includi tutte le autorizzazioni del visualizzatore di accesso VPC serverless (vpcaccess.viewer).

Console

  1. Apri la pagina IAM.

    Vai a IAM

  2. Fai clic sul menu a discesa del progetto e seleziona il progetto host.

  3. Fai clic su Concedi accesso.

  4. Nel campo Nuove entità, inserisci l'indirizzo email dell'entità che deve essere in grado di vedere il connettore dal progetto di servizio. Puoi inserisci più indirizzi email in questo campo.

  5. Nel campo Ruolo, seleziona entrambi i ruoli seguenti:

    • Visualizzatore accesso VPC serverless
    • Compute Network Viewer
  6. Fai clic su Salva.

gcloud

Esegui i seguenti comandi nel terminale:

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/vpcaccess.viewer

gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
--member=PRINCIPAL \
--role=roles/compute.networkViewer

Sostituisci quanto segue:

  • HOST_PROJECT_ID: l'ID del progetto host VPC condiviso
  • PRINCIPAL: l'entità che esegue il deployment dai servizi Cloud Run. Scopri di più sulle Flag --member.

Configura la funzione per utilizzare il connettore

Per ogni funzione che richiede l'accesso al VPC condiviso, è necessario specificare il connettore per la funzione. I passaggi seguenti spiegano come configurare la funzione per utilizzare un connettore.

Console

  1. Apri la pagina Panoramica delle funzioni Cloud Run.

    Vai alle funzioni Cloud Run

  2. Fai clic sul menu a discesa del progetto e seleziona il progetto di servizio.

  3. Fai clic su Crea funzione. In alternativa, fai clic su una funzione esistente per Vai alla pagina dei dettagli e fai clic su Modifica.

  4. Espandi le impostazioni avanzate facendo clic su Runtime, build….

  5. Nella scheda Connessioni, in Impostazioni in uscita, seleziona il tuo connettore nel campo Connettore VPC.

gcloud

  1. Imposta gcloud CLI in modo da utilizzare il progetto contenente la funzione:

    gcloud config set project PROJECT_ID
    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto che contiene che richiede l'accesso al VPC condiviso. Se si trova nel progetto host, questo è l'ID progetto host. Se la funzione si trova in un progetto di servizio, questo è l'ID del progetto di servizio.
  2. Utilizza il flag --vpc-connector ed esegui il deployment della funzione:

    gcloud functions deploy FUNCTION_NAME --vpc-connector=CONNECTOR_NAME
    

Sostituisci quanto segue:

  • FUNCTION_NAME: il nome della funzione
  • CONNECTOR_NAME: il nome del tuo di rete. Utilizza il nome completo durante il deployment da una progetto di servizio del VPC condiviso (anziché del progetto host), per esempio:
    projects/HOST_PROJECT_ID/locations/CONNECTOR_REGION/connectors/CONNECTOR_NAME
    dove HOST_PROJECT_ID è l'ID dell'host progetto, CONNECTOR_REGION è la regione e CONNECTOR_NAME è il nome che hai fornito al tuo connettore.

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

Passaggi successivi