Configurare i connettori nel progetto host VPC condiviso

Se la tua organizzazione utilizza il VPC condiviso, 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 scoprire di più sui vantaggi di ciascun metodo, consulta Connessione a una VPC condiviso 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 seguenti ruoli nel progetto host:

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

Console

  1. Vai alla dashboard della console Google Cloud .

    Vai alla Google Cloud dashboard della console

  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 eseguendo il seguente comando nel 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 la console Google Cloud , Google Cloud CLI o Terraform:

Console

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

    Abilita l'API

  2. Vai alla pagina di panoramica di 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 convenzione di denominazione di Compute Engine e 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 Subnetwork:

    Seleziona 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 subnet non venga utilizzata per Private Service Connect o Cloud Load Balancing, controlla che la subnet purpose sia PRIVATE eseguendo questo comando in gcloud CLI:
      gcloud compute networks subnets describe SUBNET_NAME
      
      Sostituisci SUBNET_NAME con il nome della tua subnet.
  8. (Facoltativo) Per impostare le opzioni di scalabilità per un maggiore controllo del 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, ovvero 2 (minimo) e 10 (massimo). Il connettore viene scalato orizzontalmente fino al massimo specificato all'aumentare del traffico, ma non viene scalato di nuovo orizzontalmente quando il traffico diminuisce. Devi utilizzare valori compresi tra 2 e 10 e il valore di MIN deve essere inferiore al valore di MAX.
    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. Nota 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 per l'uso, accanto al nome del connettore viene visualizzato un segno di spunta verde.

gcloud

  1. Aggiorna i componenti di gcloud 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: 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 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 subnet non venga utilizzata per Private Service Connect o Cloud Load Balancing, controlla che la subnet purpose sia PRIVATE eseguendo il comando seguente 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, vedi 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 viene scalato orizzontalmente fino a [MAX] istanze, ma non viene scalato di nuovo. Per informazioni sulla scalabilità dei connettori, vedi Throughput e scalabilità.
    • MACHINE_TYPE: f1-micro, e2-micro o e2-standard-4. Per informazioni sulla velocità effettiva del connettore, inclusi il tipo di macchina e lo scaling, consulta Velocità effettiva e scalabilità.

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

  4. Prima di utilizzare il connettore, verifica che si trovi nello stato READY:

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

    Sostituisci quanto segue:

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

    L'output dovrebbe 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 e poi creare il connettore.

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

Fornire l'accesso al connettore

Fornisci l'accesso al connettore concedendo il ruolo IAM Utente accesso VPC serverless nel progetto host all'entità che esegue il deployment del 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 questo comando nel 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 tuo servizio App Engine. Scopri di più sul flag --member.

Rendere rilevabile il connettore

Per visualizzare il connettore, le entità devono disporre di determinati ruoli di visualizzazione sia nel progetto host sia nel progetto di servizio. Per visualizzare il connettore quando i principal visualizzano i connettori disponibili nella console Google Cloud o dal terminale, aggiungi i ruoli IAM per i principal che eseguono il deployment dei servizi App Engine.

Concedi ruoli IAM nel progetto host

Nel progetto host, concedi ai principal 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 dal progetto di servizio. Puoi inserire più indirizzi email in questo campo.

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

  6. Fai clic su Salva.

gcloud

Esegui questo comando nel 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 nel progetto di servizio

Nel progetto di servizio, concedi ai principal che eseguono il deployment dei servizi App Engine il ruolo 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 dal progetto di servizio. Puoi inserire più indirizzi email in questo campo.

  5. Nel campo Ruolo, seleziona Visualizzatore rete Compute.

  6. Fai clic su Salva.

gcloud

Esegui questo comando nel 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 servizio per utilizzare 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. Disattiva il recupero URL predefinito e interrompi qualsiasi utilizzo esplicito della libreria urlfetch. L'accesso VPC serverless non è compatibile con il servizio URL Fetch.

  2. 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: la regione del connettore
    • CONNECTOR_NAME: il nome del connettore
  3. Esegui il deployment del servizio:

    gcloud app deploy

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

Passaggi successivi