Configura connettori nel progetto host VPC condiviso

Se la tua organizzazione utilizza la rete VPC condivisa, puoi configurare un connettore di accesso VPC serverless nel progetto di servizio o nel 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 informazioni sui vantaggi di ciascun metodo, consulta la sezione Connessione a una rete VPC condivisa.

Prima di iniziare

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

  2. Seleziona il progetto host nel tuo ambiente preferito.

Console

  1. Vai alla dashboard di Cloud Console.

    Vai alla dashboard di Cloud Console

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

gcloud

Imposta il progetto predefinito nell'interfaccia a riga di comando gcloud sul progetto host eseguendo il comando seguente nel tuo terminale:

gcloud config set project HOST_PROJECT_ID

Sostituisci quanto segue:

  • HOST_PROJECT_ID: l'ID del progetto host VPC condiviso

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 Google Cloud Console, l'interfaccia a riga di comando di Google Cloud o Terraform:

Console

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

    Abilita API

  2. Vai alla pagina Panoramica dell'accesso VPC serverless.

    Vai all'accesso VPC serverless

  3. Fai clic su Crea connettore.

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

  5. Nel campo Area geografica, seleziona un'area geografica per il connettore. Deve corrispondere all'area geografica del tuo servizio serverless.

    Se il servizio si trova nell'area geografica 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 non utilizzata.

    • Le subnet devono essere utilizzate esclusivamente dal connettore. Non possono essere utilizzate da altre risorse come VM, Private Service Connect o bilanciamento del carico HTTP(S) interno.
    • Per verificare che la subnet non sia utilizzata per Private Load Connect o il bilanciamento del carico HTTP(S) interno, verifica che la subnet purpose sia PRIVATE eseguendo il comando seguente nell'interfaccia a riga di comando gcloud:
      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 il modulo di scalabilità.

    1. Imposta il numero minimo e massimo di istanze per il connettore oppure utilizza i valori predefiniti, che sono 2 (min) e 10 (max). Il connettore fa lo scale out fino al massimo specificato man mano che il traffico aumenta, ma il connettore non ridimensiona a una riduzione del traffico. Devi utilizzare valori compresi tra 2 e 10 e il valore MIN deve essere inferiore a quello di MAX.
    2. Nel menu a discesa Tipo di istanza, scegli il tipo di macchina da utilizzare per il connettore oppure utilizza il valore predefinito e2-micro. Osserva la barra laterale dei costi a destra quando scegli il tipo di istanza, che mostra le stime della larghezza di banda e dei costi.
  9. Fai clic su Crea.

  10. Quando è pronto, viene visualizzato un segno di spunta verde accanto al nome del connettore.

gcloud

  1. Aggiorna gcloud componenti all'ultima versione:

    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 deve seguire la convenzione di denominazione di Compute Engine e contenere meno di 21 caratteri. I trattini (-) vengono conteggiati come due caratteri.
    • REGION: un'area geografica per il connettore; deve corrispondere all'area geografica del servizio serverless. Se il servizio si trova nell'area geografica us-central o europe-west, utilizza us-central1 o europe-west1.
    • SUBNET: nome di una subnet /28 inutilizzata.
      • Le subnet devono essere utilizzate esclusivamente dal connettore. Non possono essere utilizzate da altre risorse come VM, Private Service Connect o bilanciamento del carico HTTP(S) interno.
      • Per verificare che la subnet non sia utilizzata per Private Private Connect o il bilanciamento del carico HTTP(S) interno, verifica che la subnet purpose sia PRIVATE eseguendo il comando seguente nell'interfaccia a riga di comando gcloud:
        gcloud compute networks subnets describe SUBNET_NAME
        
        Sostituisci quanto segue:
        • SUBNET_NAME: nome della subnet
    • HOST_PROJECT_ID: ID del progetto host
    • MIN: numero minimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 2 e 9. Il valore predefinito è 2.
    • MAX: numero massimo di istanze da utilizzare per il connettore. Utilizza un numero intero compreso tra 3 e 10. Il valore predefinito è 10. Il connettore fa lo scale out al numero massimo di istanze man mano che il traffico aumenta, ma non scala nuovamente in.
    • MACHINE_TYPE: f1-micro, e2-micro o e2-standard-4

      Tipo di macchina Intervallo di velocità effettiva stimato in Mbps Prezzo
      (istanza del connettore più costi per il traffico in uscita dalla rete)
      f1-micro 100-500 Prezzi f1-micro
      e2-micro 200-1000 Prezzi e2-micro
      e2-standard-4 3200-16000 Prezzi standard e2

      Ad esempio, se imposti MACHINE_TYPE su f1-micro, la velocità effettiva stimata del tuo connettore sarà 100 Mbps con il valore predefinito MIN e 500 Mbps con il valore predefinito MAX.

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

  4. 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; si tratta del nome specificato nel passaggio precedente
    • REGION: l'area geografica del tuo connettore; si tratta dell'area geografica che hai specificato nel passaggio precedente

    L'output dovrebbe contenere la riga state: READY.

Terraform

Puoi utilizzare una risorsa Terra 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 Teraform per creare una rete VPC e una subnet, quindi creare il connettore.

module "test-vpc-module" {
  source       = "terraform-google-modules/network/google"
  version      = "~> 3.3.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"
  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
  ]
}

Fornisci l'accesso al connettore

Fornisci l'accesso al connettore concedendo il ruolo IAM Utente VPC VPC sul progetto host all'entità che esegue il deployment del tuo servizio App Engine.

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

  4. Nel campo Nuove entità, aggiungi l'entità che esegue il deployment del tuo servizio App Engine.

  5. Nel campo Ruolo, seleziona Utente accesso VPC serverless.

  6. Fai clic su Salva.

gcloud

Esegui quanto segue nel tuo terminale:

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

Sostituisci quanto segue:

  • HOST_PROJECT_ID: l'ID del progetto host VPC condiviso
  • PRINCIPAL: l'entità che esegue il deployment del servizio App Engine. Scopri di più sul flag --member.

Rendi il connettore rilevabile

Per visualizzare il connettore, le entità richiedono determinati ruoli di visualizzazione sia nel progetto host sia nel progetto di servizio. Per fare in modo che il connettore venga visualizzato quando le entità visualizzano i connettori disponibili in Cloud Console o dal loro terminale, aggiungi i ruoli IAM per le entità che eseguono il deployment dei servizi App Engine.

Concedi ruoli IAM sul progetto host

Nel progetto host, concedi alle entità che eseguono il deployment dei servizi App Engine il ruolo Visualizzatore 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 Aggiungi.

  4. Nel campo Nuove entità, inserisci l'indirizzo email dell'entità che deve essere in grado di visualizzare il connettore del progetto di servizio. In questo campo puoi inserire più email.

  5. Nel campo Ruolo, seleziona Visualizzatore accesso VPC serverless.

  6. Fai clic su Salva.

gcloud

Esegui quanto segue nel tuo terminale:

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

Sostituisci quanto segue:

  • HOST_PROJECT_ID: l'ID del progetto host VPC condiviso
  • PRINCIPAL: l'entità che esegue il deployment dei servizi App Engine. Scopri di più sul flag --member.

Concedi ruoli IAM sul progetto di servizio

Nel progetto di servizio, concedi alle entità che eseguono il deployment dei servizi App Engine il ruolo di Visualizzatore rete Compute (compute.networkViewer).

Console

  1. Apri la pagina IAM.

    Vai a IAM

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

  3. Fai clic su Aggiungi.

  4. Nel campo Nuove entità, inserisci l'indirizzo email dell'entità che deve essere in grado di visualizzare il connettore del progetto di servizio. In questo campo puoi inserire più email.

  5. Nel campo Ruolo, seleziona Visualizzatore rete Compute.

  6. Fai clic su Salva.

gcloud

Esegui quanto segue nel tuo terminale:

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

Sostituisci quanto segue:

  • SERVICE_PROJECT_ID: l'ID del progetto di servizio
  • PRINCIPAL: l'entità che esegue il deployment dei servizi App Engine. Scopri di più sul flag --member.

Configura il tuo servizio per l'utilizzo di un connettore

Per ogni servizio App Engine che richiede l'accesso al tuo VPC condiviso, devi specificare il connettore per il servizio. I passaggi seguenti mostrano come configurare il servizio per utilizzare un connettore.

  1. Aggiungi vpc_access_connector al file app.yaml del tuo servizio:

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

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host VPC condiviso
    • REGION: area geografica del connettore
    • CONNECTOR_NAME: nome del tuo connettore
  2. Esegui il deployment del servizio:

    gcloud app deploy

Dopo il deployment, il tuo servizio è in grado di inviare richieste alla tua rete VPC condivisa e di ricevere le risposte corrispondenti.

Passaggi successivi