Provisioning della rete VPC condivisa

Un VPC condiviso consente di esportare le subnet da una rete Virtual Private Cloud (VPC) in un progetto host ad altri progetti di servizio nella stessa organizzazione. Le istanze nei progetti di servizio possono avere connessioni di rete nelle subnet condivise del progetto host. Questa pagina descrive come configurare e utilizzare il VPC condiviso, inclusa alcune preparazione amministrativa necessaria per la tua organizzazione.

Il VPC condiviso supporta l'esportazione di subnet solo IPv4 (stack singolo), IPv4 e IPv6 (stack doppio).

Per informazioni su come scollegare i progetti di servizio o rimuovere completamente la configurazione del VPC condiviso, consulta Eseguire il deprovisioning del VPC condiviso.

Il VPC condiviso è chiamato anche "XPN" nell'API e nell'interfaccia a riga di comando.

Quote, limiti e risorse idonee

Prima di iniziare, assicurati di conoscere bene il VPC condiviso e IAM, in particolare:

Preparare l'organizzazione

Amministratori e IAM

La preparazione dell'organizzazione, la configurazione dei progetti host del VPC condiviso e l'utilizzo delle reti VPC condivise richiedono almeno tre diversi ruoli amministrativi di Identity and Access Management (IAM). Per maggiori dettagli su ciascun ruolo e informazioni su quelli facoltativi, consulta la sezione Amministratori e IAM della panoramica del VPC condiviso.

Vincoli dei criteri dell'organizzazione

I vincoli dei criteri dell'organizzazione possono proteggere le risorse VPC condiviso a livello di progetto, cartella o organizzazione. Nelle sezioni seguenti sono descritti i singoli criteri.

Impedisci l'eliminazione accidentale dei progetti host

L'eliminazione accidentale di un progetto host comporterebbe interruzioni di tutti i progetti di servizio collegati. Quando un progetto è configurato come progetto host del VPC condiviso, viene applicato un blocco speciale, chiamato blocco. Finché il blocco è presente, il progetto non viene eliminato accidentalmente. Il blocco viene rimosso automaticamente dal progetto host quando non è più configurato per il VPC condiviso.

Un utente con il ruolo orgpolicy.policyAdmin può definire un vincolo relativo ai criteri a livello di organizzazione (constraints/compute.restrictXpnProjectLienRemove) che limita la rimozione dei blocchi solo ai ruoli seguenti:

  • Utenti con roles/owner o roles/resourcemanager.lienModifier a livello di organizzazione
  • Utente con ruoli personalizzati che includono le autorizzazioni resourcemanager.projects.get e resourcemanager.projects.updateLiens a livello di organizzazione

In questo modo, il proprietario del progetto che non dispone del ruolo roles/owner a livello di organizzazione o di resourcemanager.lienModifier a livello di organizzazione impedisce di eliminare accidentalmente un progetto host del VPC condiviso. Per ulteriori informazioni sulle autorizzazioni associate al ruolo resourcemanager.lienModifier, consulta Inserire un blocco su un progetto nella documentazione di Resource Manager.

Poiché un criterio dell'organizzazione si applica a tutti i progetti nell'organizzazione, devi seguire questi passaggi solo una volta per limitare la rimozione dei blocchi.

  1. Esegui l'autenticazione in gcloud come amministratore dell'organizzazione o entità IAM con il ruolo orgpolicy.policyAdmin. Sostituisci ORG_ADMIN con il nome di un amministratore dell'organizzazione:

    gcloud auth login ORG_ADMIN
    
  2. Per determinare il numero ID dell'organizzazione, osserva l'output di questo comando.

    gcloud organizations list
    
  3. Applica il criterio compute.restrictXpnProjectLienRemoval per la tua organizzazione eseguendo questo comando. Sostituisci ORG_ID con il numero determinato nel passaggio precedente.

    gcloud resource-manager org-policies enable-enforce \
        --organization ORG_ID compute.restrictXpnProjectLienRemoval
    
  4. Esci da gcloud se hai completato le attività come amministratore dell'organizzazione per proteggere il tuo account.

    gcloud auth revoke ORG_ADMIN
    

Vincola collegamenti del progetto host

Per impostazione predefinita, un amministratore di un VPC condiviso può collegare un utente non host a qualsiasi progetto host nella stessa organizzazione. Un amministratore dei criteri dell'organizzazione può limitare l'insieme di progetti host a cui è possibile collegare un progetto non host o non host in una cartella o un'organizzazione. Per ulteriori informazioni, consulta il vincolo constraints/compute.restrictSharedVpcHostProjects.

Limita le subnet nel progetto host che possono essere utilizzate da un progetto di servizio

Per impostazione predefinita, dopo aver configurato il VPC condiviso, le entità IAM nei progetti di servizio possono utilizzare qualsiasi subnet nel progetto host se dispongono delle autorizzazioni IAM appropriate. Oltre a gestire le autorizzazioni dei singoli utenti, un amministratore dei criteri dell'organizzazione può impostare un criterio per definire l'insieme di subnet a cui un determinato progetto o progetti in una cartella o organizzazione possono accedere. Per maggiori informazioni, consulta il vincolo constraints/compute.restrictSharedVpcSubnetworks.

Impedisci l'arresto accidentale dei progetti host

La disconnessione della fatturazione su una rete VPC condiviso può comportare l'arresto completo di tutte le risorse dipendenti, inclusi i progetti di servizio. Per evitare che possa verificarsi un arresto accidentale del VPC condiviso a causa di una fatturazione non attiva o disabilitata, proteggi il collegamento tra il progetto host e il relativo account di fatturazione.

Nomina amministratori VPC condivisi

Un amministratore dell'organizzazione può concedere a una o più entità IAM i ruoli Amministratore VPC condiviso e Amministratore IAM progetto.

Il ruolo Amministratore IAM progetto concede agli amministratori VPC condivisi l'autorizzazione per condividere tutte le subnet esistenti e future, non solo le singole subnet. Questa concessione crea un'associazione a livello di organizzazione o cartella, non a livello di progetto. Quindi le entità IAM devono essere definite nell'organizzazione, non solo un progetto al suo interno.

Console

Per concedere il ruolo Amministratore VPC condiviso a livello di organizzazione

  1. Accedi alla console Google Cloud come amministratore dell'organizzazione, quindi vai alla pagina IAM.
    Vai alla pagina IAM
  2. Dal menu del progetto, seleziona la tua organizzazione.
    Se selezioni un progetto, non vedrai le voci corrette nel menu Ruoli.
  3. Fai clic su Aggiungi.
  4. Inserisci gli indirizzi email di Nuove entità.
  5. Nel menu a discesa Ruoli, seleziona Compute Engine > Amministratore VPC condiviso Compute.

  6. Fai clic su Aggiungi un altro ruolo.

  7. Nel menu a discesa Ruoli, seleziona Resource Manager > Amministratore IAM progetto.

  8. Fai clic su Salva.

Per concedere il ruolo Amministratore VPC condiviso a livello di cartella

  1. Accedi alla console Google Cloud come amministratore dell'organizzazione, quindi vai alla pagina IAM.
    Vai alla pagina IAM
  2. Dal menu del progetto, seleziona la cartella.
    Se selezioni un progetto o un'organizzazione, non vedrai le opzioni corrette.
  3. Fai clic su Aggiungi.
  4. Inserisci gli indirizzi email di Nuove entità.
  5. In Seleziona un ruolo, seleziona Compute Engine > Amministratore VPC condiviso Compute.
  6. Fai clic su Aggiungi un altro ruolo.
  7. Nel menu a discesa Ruoli, seleziona Resource Manager > Amministratore IAM progetto.
  8. Fai clic su Aggiungi un altro ruolo.
  9. Nel menu a discesa Ruoli, seleziona Resource Manager > Visualizzatore rete Compute.
  10. Fai clic su Salva.

gcloud

  1. Esegui l'autenticazione su gcloud come amministratore dell'organizzazione. Sostituisci ORG_ADMIN con il nome di un amministratore dell'organizzazione:

    gcloud auth login ORG_ADMIN
    
  2. Per determinare il numero ID dell'organizzazione, osserva l'output di questo comando.

    gcloud organizations list
    
  3. Se vuoi assegnare il ruolo Amministratore VPC condiviso a livello di organizzazione, segui questi passaggi:

    1. Applica il ruolo Amministratore VPC condiviso a un'entità IAM esistente. Sostituisci ORG_ID con l'ID organizzazione del passaggio precedente e EMAIL_ADDRESS con l'indirizzo email dell'utente a cui stai concedendo il ruolo Amministratore VPC condiviso.

      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/compute.xpnAdmin"
      
      gcloud organizations add-iam-policy-binding ORG_ID \
        --member='user:EMAIL_ADDRESS' \
        --role="roles/resourcemanager.projectIamAdmin"
      
  4. Se vuoi assegnare il ruolo Amministratore VPC condiviso a livello di cartella:

    1. Determina l'ID cartella osservando l'output di questo comando.

      gcloud resource-manager folders list --organization=ORG_ID
      
    2. Applica il ruolo Amministratore VPC condiviso a un'entità IAM esistente. Sostituisci ORG_ID con l'ID organizzazione del passaggio precedente e EMAIL_ADDRESS con l'indirizzo email dell'utente a cui stai concedendo il ruolo Amministratore VPC condiviso.

      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.xpnAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/resourcemanager.projectIamAdmin"
      
      gcloud resource-manager folders add-iam-policy-binding FOLDER_ID \
         --member='user:EMAIL_ADDRESS' \
         --role="roles/compute.networkViewer"
      
  5. Revoca il token dell'account di amministratore dell'organizzazione per lo strumento a riga di comando gcloud quando hai completato le attività per proteggere il tuo account.

    gcloud auth revoke ORG_ADMIN
    

API

  • Per assegnare il ruolo Amministratore VPC condiviso a livello di organizzazione, utilizza la procedura seguente:

    1. Determina il numero ID dell'organizzazione.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Descrivi e registra i dettagli del criterio dell'organizzazione esistente.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:getIamPolicy
      

      Sostituisci ORG_ID con l'ID della tua organizzazione.

    3. Assegna il ruolo Amministratore VPC condiviso.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/ORG_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Sostituisci quanto segue:

      • ORG_ID: l'ID dell'organizzazione contenente l'utente a cui stai concedendo il ruolo Amministratore VPC condiviso.
      • EMAIL_ADDRESS: l'indirizzo email dell'utente.
      • ETAG: un identificatore univoco che hai ricevuto quando hai descritto il criterio esistente. Impedisce le collisioni se vengono inviate più richieste di aggiornamento contemporaneamente.

      Per ulteriori informazioni, consulta il metodo organizations.setIamPolicy.

  • Per assegnare il ruolo Amministratore VPC condiviso a livello di cartella, utilizza la richiesta seguente:

    1. Determina il numero ID dell'organizzazione.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations
      
    2. Cerca l'ID cartella.

      GET https://cloudresourcemanager.googleapis.com/v2/folders?parent=organizations/ORG_ID
      

      Sostituisci ORG_ID con l'ID della tua organizzazione.

    3. Descrivi e registra i dettagli del criterio relativo alle cartelle esistente.

      POST https://cloudresourcemanager.googleapis.com/v2/folders/FOLDER_ID:getIamPolicy
      

      Sostituisci FOLDER_ID con l'ID della tua cartella.

    4. Assegna il ruolo Amministratore VPC condiviso.

      POST https://cloudresourcemanager.googleapis.com/v1/organizations/FOLDER_ID:setIamPolicy
      {
        "bindings": [
          ...copy existing bindings
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.xpnAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/resourcemanager.projectIamAdmin"
          },
          {
            "members": [
              "user:EMAIL_ADDRESS"
            ],
            "role": "roles/compute.networkViewer"
          }
        ],
        "etag": "ETAG",
        "version": 1,
        ...other existing policy details
      }
      

      Sostituisci quanto segue:

      • FOLDER_ID: l'ID dell'organizzazione contenente l'utente a cui stai concedendo il ruolo Amministratore VPC condiviso.
      • EMAIL_ADDRESS: l'indirizzo email dell'utente.
      • ETAG: un identificatore univoco che hai ricevuto quando hai descritto il criterio esistente. Impedisce conflitti se vengono inviate più richieste di aggiornamento contemporaneamente.

      Per ulteriori informazioni, consulta il metodo folders.setIamPolicy.

Configura rete VPC condivisa

Tutte le attività in questa sezione devono essere eseguite da un amministratore del VPC condiviso.

Abilita un progetto host

All'interno di un'organizzazione, gli amministratori di VPC condivisi possono designare i progetti come progetti host del VPC condiviso, soggetti a quote e limiti, seguendo questa procedura. Gli amministratori dei VPC condivisi possono anche creare ed eliminare i progetti se dispongono del ruolo Autore progetto e Autore eliminazione progetto (roles/resourcemanager.projectCreator e roles/resourcemanager.projectDeleter) per la tua organizzazione.

Quando abiliti un progetto host, le risorse di rete del progetto non vengono condivise automaticamente con i progetti di servizio. Per condividere le reti e le subnet selezionate con i progetti di servizio, devi collegare i progetti di servizio al progetto host.

Console

Se non disponi ancora del ruolo Amministratore VPC condiviso, non potrai visualizzare questa pagina nella console Google Cloud.

  1. Nella console Google Cloud, vai alla pagina VPC condiviso.
    Vai alla pagina VPC condiviso
  2. Accedi come amministratore del VPC condiviso.
  3. Seleziona il progetto che vuoi abilitare come progetto host del VPC condiviso dal selettore dei progetti.
  4. Fai clic su Configura un VPC condiviso.
  5. Nella pagina successiva, fai clic su Salva e continua in Abilita progetto host.
  6. In Seleziona subnet, esegui una delle seguenti operazioni:
    1. Fai clic su Condividi tutte le subnet (autorizzazioni a livello di progetto) se devi condividere tutte le subnet attuali e future nelle reti VPC del progetto host con i progetti di servizio e gli amministratori del progetto di servizio specificati nei passaggi successivi.
    2. Fai clic su Singole subnet (autorizzazioni a livello di subnet) se devi condividere in modo selettivo le subnet dalle reti VPC del progetto host con progetti di servizio e amministratori di progetti di servizio. Quindi, seleziona Subnet da condividere.
  7. Fai clic su Continua.
    Viene visualizzata la schermata successiva.
  8. In Nomi di progetto, specifica i progetti di servizio da collegare al progetto host. Tieni presente che il collegamento dei progetti di servizio non definisce alcun amministratore dei progetti di servizio; questa operazione viene eseguita nel passaggio successivo.
  9. Nella sezione Seleziona gli utenti per ruolo, aggiungi amministratori del progetto di servizio. A questi utenti verrà concesso il ruolo IAM compute.networkUser per le subnet condivise. Solo gli amministratori del progetto di servizio possono creare risorse nelle subnet del progetto host del VPC condiviso.
  10. Fai clic su Salva.

gcloud

  1. Esegui l'autenticazione su gcloud come amministratore del VPC condiviso. Sostituisci SHARED_VPC_ADMIN con il nome dell'amministratore del VPC condiviso:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Abilita un VPC condiviso per il progetto che devi diventare un progetto host. Sostituisci HOST_PROJECT_ID con l'ID del progetto.

    gcloud compute shared-vpc enable HOST_PROJECT_ID
    
  3. Verifica che il progetto sia elencato come progetto host per la tua organizzazione. Sostituisci ORG_ID con l'ID organizzazione (determinato da gcloud organizations list).

    gcloud compute shared-vpc organizations list-host-projects ORG_ID
    
  4. Se avevi solo bisogno di abilitare un progetto host, puoi uscire da gcloud per proteggere le credenziali del tuo account amministratore del VPC condiviso. In caso contrario, salta questo passaggio e continua con i passaggi per collegare i progetti di servizio.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Abilita il VPC condiviso per il progetto utilizzando credenziali con autorizzazioni di amministratore per VPC condivisi.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnHost
    

    Sostituisci HOST_PROJECT_ID con l'ID del progetto che sarà un progetto host del VPC condiviso.

    Per ulteriori informazioni, consulta il metodo projects.enableXpnHost.

  2. Verifica che il progetto sia elencato come progetto host.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/listXpnHosts
    

    Sostituisci HOST_PROJECT_ID con l'ID del progetto host del VPC condiviso.

    Per ulteriori informazioni, consulta il metodo projects.listXpnHosts.

Terraform

Puoi utilizzare una risorsa Terraform per abilitare un progetto host.

resource "google_compute_shared_vpc_host_project" "host" {
  project = var.project # Replace this with your host project ID in quotes
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Associa i progetti di servizio

Un progetto di servizio deve essere collegato a un progetto host prima che gli amministratori del relativo progetto di servizio possano utilizzare il VPC condiviso. Un amministratore di un VPC condiviso deve eseguire questi passaggi per completare il collegamento.

Un progetto di servizio può essere collegato a un solo progetto host, mentre un progetto host supporta più collegamenti al progetto di servizio. Per i dettagli, consulta Limiti specifici per il VPC condiviso nella pagina delle quote VPC.

Console

  1. Accedi alla console Google Cloud come amministratore del VPC condiviso.
  2. Nella console Google Cloud, vai alla pagina VPC condiviso.
    Vai alla pagina VPC condiviso
  3. Fai clic sulla scheda Progetti collegati.
  4. Nella scheda Progetti collegati, fai clic sul pulsante Allega progetti.
  5. Seleziona le caselle corrispondenti ai progetti di servizio da collegare nella sezione Nomi progetti. Tieni presente che il collegamento dei progetti di servizio non definisce alcun amministratore dei progetti di servizio; questa operazione viene eseguita nel passaggio successivo.
  6. Nella sezione Autorizzazioni di rete VPC, seleziona i ruoli le cui entità riceveranno il ruolo compute.networkUser. Alle entità IAM viene concesso il ruolo Utente di rete per l'intero progetto host o per alcune subnet nel progetto host, a seconda della modalità di condivisione della rete VPC. Queste entità sono note come amministratori dei progetti di servizio nei rispettivi progetti di servizio.
  7. Nella sezione Modalità di condivisione di rete VPC, seleziona una delle seguenti opzioni:
    1. Fai clic su Condividi tutte le subnet (autorizzazioni a livello di progetto) per condividere tutte le subnet attuali e future nelle reti VPC del progetto host con tutti i progetti di servizio e gli amministratori dei progetti di servizio.
    2. Fai clic su Singole subnet (autorizzazioni a livello di subnet) se devi condividere in modo selettivo le subnet dalle reti VPC del progetto host con progetti di servizio e amministratori di progetti di servizio. Quindi, seleziona Subnet da condividere.
  8. Fai clic su Salva.

gcloud

  1. Se non lo hai già fatto, esegui l'autenticazione su gcloud come amministratore del VPC condiviso. Sostituisci SHARED_VPC_ADMIN con il nome dell'amministratore del VPC condiviso:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Collega un progetto di servizio a un progetto host abilitato in precedenza. Sostituisci SERVICE_PROJECT_ID con l'ID del progetto di servizio e HOST_PROJECT_ID con l'ID del progetto host.

    gcloud compute shared-vpc associated-projects add SERVICE_PROJECT_ID \
        --host-project HOST_PROJECT_ID
    
  3. Verifica che il progetto di servizio sia stato collegato.

    gcloud compute shared-vpc get-host-project SERVICE_PROJECT_ID
    
  4. Facoltativamente, puoi elencare i progetti di servizio collegati al progetto host:

    gcloud compute shared-vpc list-associated-resources HOST_PROJECT_ID
    
  5. Se dovevi solo collegare un progetto di servizio, puoi uscire da gcloud per proteggere le credenziali del tuo account amministratore del VPC condiviso. In caso contrario, salta questo passaggio e definisci gli amministratori del progetto di servizio per tutte le subnet o solo per alcune subnet.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Associa un progetto di servizio al progetto host del VPC condiviso.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/enableXpnResource
    {
      "xpnResource": {
        "id": "SERVICE_PROJECT"
      }
    }
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • SERVICE_PROJECT: l'ID del progetto di servizio da collegare.

    Per ulteriori informazioni, consulta il metodo projects.enableXpnResource.

  2. Conferma che i progetti di servizio siano collegati al progetto host.

    GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/getXpnResources
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.

    Per ulteriori informazioni, consulta il metodo projects.getXpnResources.

Terraform

Puoi utilizzare una risorsa Terraform per collegare un progetto di servizio.

resource "google_compute_shared_vpc_service_project" "service1" {
  host_project    = google_compute_shared_vpc_host_project.host.project
  service_project = var.service_project # Replace this with your service project ID in quotes
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Amministratori progetti di servizio per tutte le subnet

Un amministratore di un VPC condiviso può assegnare un'entità IAM di un progetto di servizio come amministratore del progetto di servizio con accesso a tutte le subnet nel progetto host. Agli amministratori del progetto di servizio di questo tipo viene concesso il ruolo compute.networkUser per l'intero progetto host. Ciò significa che hanno accesso a tutte le subnet attualmente definite e future nel progetto host.

Un utente con il ruolo compute.networkUser nel progetto host può visualizzare tutte le subnet nei progetti di servizio associati.

Console

Per definire un'entità IAM di un progetto di servizio come Amministratore del progetto di servizio con accesso a tutte le subnet in un progetto host utilizzando la console Google Cloud, consulta la sezione Collega progetti di servizio.

gcloud

Questi passaggi riguardano la definizione di un'entità IAM da un progetto di servizio come amministratore del progetto di servizio con accesso a tutte le subnet in un progetto host. Prima di poter eseguire questi passaggi, devi aver abilitato un progetto host e collegato il progetto di servizio al progetto host.

  1. Se non lo hai già fatto, esegui l'autenticazione su gcloud come amministratore del VPC condiviso. Sostituisci SHARED_VPC_ADMIN con il nome dell'amministratore del VPC condiviso:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Crea un'associazione di criteri per rendere un'entità IAM del progetto di servizio un amministratore del progetto di servizio. Sostituisci HOST_PROJECT_ID con l'ID progetto del progetto host e SERVICE_PROJECT_ADMIN con l'indirizzo email dell'utente amministratore del progetto di servizio.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
    --member "user:SERVICE_PROJECT_ADMIN" \
    --role "roles/compute.networkUser"
    

    Puoi specificare diversi tipi di entità cambiando il formato dell'argomento --member:

    • Utilizza group: per specificare un gruppo Google (tramite indirizzo email) come entità.
    • Utilizza domain: per specificare un dominio Google come entità.
    • Usa serviceAccount: per specificare un account di servizio. Per ulteriori informazioni su questo caso d'uso, consulta Account di servizio come amministratori di progetti di servizio.
  3. Ripeti il passaggio precedente per ciascun amministratore del progetto di servizio aggiuntivo che devi definire.

  4. Se hai completato la definizione degli amministratori del progetto di servizio, puoi uscire da gcloud per proteggere le credenziali del tuo account amministratore del VPC condiviso.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Descrivi e poi registra i dettagli del criterio del progetto esistente. Sono necessari il criterio esistente e il valore etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Sostituisci HOST_PROJECT_ID con l'ID del progetto host che contiene la rete VPC condiviso.

  2. Crea un'associazione di criteri per designare le entità IAM nel progetto di servizio come amministratori del progetto di servizio.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host che contiene la rete VPC condiviso.
    • PRINCIPAL: un'identità a cui è associato il ruolo, ad esempio un utente, un gruppo, un dominio o un account di servizio. Per saperne di più, consulta il campo members nella documentazione di Resource Manager.
    • ETAG: un identificatore univoco che hai ricevuto quando hai descritto il criterio esistente. Impedisce conflitti se vengono inviate più richieste di aggiornamento contemporaneamente.

    Per ulteriori informazioni, consulta il metodo projects.setIamPolicy.

Amministratori progetti di servizio per alcune subnet

Un amministratore di un VPC condiviso può assegnare un'entità IAM di un progetto di servizio come amministratore del progetto di servizio con accesso solo ad alcune delle subnet nel progetto host. Questa opzione fornisce un mezzo più granulare per definire gli amministratori del progetto di servizio concedendo loro il ruolo compute.networkUser solo per alcune subnet nel progetto host.

Un utente con il ruolo compute.networkUser nel progetto host può visualizzare tutte le subnet nei progetti di servizio associati.

Console

Per definire un'entità IAM di un progetto di servizio come Amministratore del progetto di servizio con accesso solo ad alcune subnet in un progetto host utilizzando la console Google Cloud, consulta la sezione Collega progetti di servizio.

gcloud

Questi passaggi descrivono la definizione delle entità IAM di un progetto di servizio come amministratori del progetto di servizio con accesso solo ad alcune subnet in un progetto host. Prima di poterli definire, devi aver abilitato un progetto host e collegato il progetto di servizio al progetto host.

  1. Se non lo hai già fatto, esegui l'autenticazione su gcloud come amministratore del VPC condiviso. Sostituisci SHARED_VPC_ADMIN con il nome dell'amministratore del VPC condiviso:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Scegli la subnet nel progetto host a cui devono accedere gli amministratori del progetto di servizio. Recupera i suoi criteri IAM attuali in formato JSON. Sostituisci SUBNET_NAME con il nome della subnet nel progetto host e HOST_PROJECT_ID con l'ID del progetto host.

    gcloud compute networks subnets get-iam-policy SUBNET_NAME \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID \
        --format json
    
  3. Copia l'output JSON dal passaggio precedente e salvalo in un file. Per maggiore chiarezza, questi passaggi salvano il file in un file denominato subnet-policy.json.

  4. Modifica il file subnet-policy.json, aggiungendo le entità IAM che diventeranno amministratori del progetto di servizio con accesso alla subnet. Sostituisci ogni SERVICE_PROJECT_ADMIN con l'indirizzo email di un utente IAM del progetto di servizio.

    {
      "bindings": [
      {
         "members": [
               "user:[SERVICE_PROJECT_ADMIN]",
               "user:[SERVICE_PROJECT_ADMIN]"
            ],
            "role": "roles/compute.networkUser"
      }
      ],
      "etag": "[ETAG_STRING]"
    }
    

    Tieni presente che puoi specificare diversi tipi di entità IAM (diverse dagli utenti) nel criterio:

    • Cambia user: con group: per specificare un gruppo Google (tramite indirizzo email) come entità.
    • Passa a user: con domain: per specificare un dominio Google come entità.
    • Usa serviceAccount: per specificare un account di servizio. Per ulteriori informazioni su questo caso d'uso, consulta Account di servizio come amministratori di progetti di servizio.
  5. Aggiorna l'associazione di criteri per la subnet utilizzando i contenuti del file subnet-policy.json.

    gcloud compute networks subnets set-iam-policy SUBNET_NAME subnet-policy.json \
        --region SUBNET_REGION \
        --project HOST_PROJECT_ID
    
  6. Se hai completato la definizione degli amministratori del progetto di servizio, puoi uscire da gcloud per proteggere le credenziali del tuo account amministratore del VPC condiviso.

    gcloud auth revoke SHARED_VPC_ADMIN
    

API

  1. Descrivi e registra i dettagli del criterio di subnet esistente. Sono necessari il criterio esistente e il valore etag.

    GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/getIamPolicy
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host che contiene la rete VPC condiviso.
    • SUBNET_NAME: il nome della subnet da condividere.
    • SUBNET_REGION: la regione in cui si trova la subnet.
  2. Concedi agli amministratori del progetto di servizio l'accesso alle subnet nel progetto host aggiornando il criterio della subnet.

    POST https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/SUBNET_REGION/subnetworks/SUBNET_NAME/setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            PRINCIPAL,
            ...additional principals
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Sostituisci quanto segue:

    • ETAG: un identificatore univoco che hai ricevuto quando hai descritto il criterio esistente. Impedisce conflitti se vengono inviate più richieste di aggiornamento contemporaneamente.
    • HOST_PROJECT_ID: l'ID del progetto host che contiene la rete VPC condiviso.
    • PRINCIPAL: un'identità a cui è associato il ruolo, ad esempio un utente, un gruppo, un dominio o un account di servizio. Per saperne di più, consulta il campo members nella documentazione di Resource Manager.
    • SUBNET_NAME: il nome della subnet da condividere.
    • SUBNET_REGION: la regione in cui si trova la subnet.

    Per ulteriori informazioni, consulta il metodo subnetworks.setIamPolicy.

Account di servizio come amministratori di progetti di servizio

Un amministratore VPC condiviso può anche definire gli account di servizio dei progetti di servizio come amministratori dei progetti di servizio. Questa sezione illustra come definire due tipi diversi di account di servizio come amministratori del progetto di servizio:

Il ruolo Amministratore progetto di servizio (compute.networkUser) può essere concesso per tutte le subnet o solo alcune subnet del progetto host. Tuttavia, per semplicità di insegnamento, questa sezione illustra solo come definire ciascuno dei due tipi di account di servizio come amministratori del progetto di servizio per tutte le subnet del progetto host.

Account di servizio gestiti dall'utente come amministratori dei progetti di servizio

Queste indicazioni descrivono come definire un account di servizio gestito dall'utente come amministratore del progetto di servizio per tutte le subnet del progetto host del VPC condiviso.

Console

  1. Accedi alla console Google Cloud come amministratore del VPC condiviso.
  2. Nella console Google Cloud, vai alla pagina Impostazioni.
    Vai alla pagina Impostazioni
  3. Cambia il progetto impostandolo su quello contenente l'account di servizio che deve essere definito come amministratore del progetto di servizio.
  4. Copia l'ID progetto del progetto di servizio. Per chiarezza, questa procedura fa riferimento all'ID progetto di servizio come SERVICE_PROJECT_ID.
  5. Modifica il progetto nel progetto host del VPC condiviso.
  6. Vai alla pagina IAM nella console Google Cloud.
    Vai alla pagina IAM
  7. Fai clic su Aggiungi.
  8. Aggiungi SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com al campo Entità, sostituendo SERVICE_ACCOUNT_NAME con il nome dell'account di servizio.
  9. Seleziona Compute Engine > Utente di rete Compute dal menu Ruoli.
  10. Fai clic su Aggiungi.

gcloud

  1. Se non lo hai già fatto, esegui l'autenticazione su gcloud come amministratore del VPC condiviso. Sostituisci SHARED_VPC_ADMIN con il nome dell'amministratore del VPC condiviso:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Se non conosci l'ID del progetto di servizio, puoi elencare tutti i progetti della tua organizzazione. Questo elenco mostra l'ID progetto di ciascuno.

    gcloud projects list
    
  3. Crea un'associazione di criteri per rendere l'account di servizio un amministratore del progetto di servizio. Sostituisci HOST_PROJECT_ID con l'ID del progetto host,SERVICE_ACCOUNT_NAME con il nome dell'account di servizio e SERVICE_PROJECT_ID con l'ID del progetto di servizio.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Descrivi e poi registra i dettagli del criterio del progetto esistente. Sono necessari il criterio esistente e il valore etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Sostituisci HOST_PROJECT_ID con l'ID del progetto host che contiene la rete VPC condiviso.

  2. Crea un'associazione di criteri per designare gli account di servizio come amministratori di progetti di servizio.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_ACCOUNT_NAME@SERVICE_PROJECT_ID.iam.gserviceaccount.com",
            ...include additional service accounts
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host che contiene la rete VPC condiviso.
    • SERVICE_ACCOUNT_NAME: il nome dell'account di servizio.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio che contiene l'account di servizio.
    • ETAG: un identificatore univoco che hai ricevuto quando hai descritto il criterio esistente. Impedisce conflitti se vengono inviate più richieste di aggiornamento contemporaneamente.

    Per ulteriori informazioni, consulta il metodo projects.setIamPolicy.

Account di servizio API di Google come amministratore del progetto di servizio

In queste istruzioni viene spiegato come definire l'account di servizio delle API di Google come amministratore del progetto di servizio per tutte le subnet del progetto host del VPC condiviso. Impostare l'account di servizio delle API di Google come amministratore del progetto di servizio è un requisito per i gruppi di istanze gestite utilizzati con il VPC condiviso, perché attività come la creazione delle istanze vengono eseguite da questo tipo di account di servizio. Per ulteriori informazioni su questa relazione, consulta Gruppi di istanze gestite e IAM.

Console

  1. Accedi alla console Google Cloud come amministratore del VPC condiviso.
  2. Nella console Google Cloud, vai alla pagina Impostazioni.
    Vai alla pagina Impostazioni
  3. Cambia il progetto impostandolo su quello contenente l'account di servizio che deve essere definito come amministratore del progetto di servizio.
  4. Copia il Numero di progetto del progetto di servizio. Per chiarezza, questa procedura fa riferimento al numero del progetto di servizio come SERVICE_PROJECT_NUMBER.
  5. Modifica il progetto nel progetto host del VPC condiviso.
  6. Vai alla pagina IAM nella console Google Cloud.
    Vai alla pagina IAM
  7. Fai clic su Aggiungi.
  8. Aggiungi SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com al campo Membri.
  9. Seleziona Compute Engine > Utente di rete Compute dal menu Ruoli.
  10. Fai clic su Aggiungi.

gcloud

  1. Se non lo hai già fatto, esegui l'autenticazione su gcloud come amministratore del VPC condiviso. Sostituisci SHARED_VPC_ADMIN con il nome dell'amministratore del VPC condiviso:

    gcloud auth login SHARED_VPC_ADMIN
    
  2. Determina il numero di progetto per il progetto di servizio. Per maggiore chiarezza, questa procedura fa riferimento al numero del progetto di servizio come SERVICE_PROJECT_NUMBER. Sostituisci SERVICE_PROJECT_ID con l'ID del progetto di servizio.

    gcloud projects describe SERVICE_PROJECT_ID --format='get(projectNumber)'
    
    • Se non conosci l'ID del progetto di servizio, puoi elencare tutti i progetti della tua organizzazione. Questo elenco mostra il numero di ciascun progetto.

      gcloud projects list
      
  3. Crea un'associazione di criteri per rendere l'account di servizio un amministratore del progetto di servizio. Sostituisci HOST_PROJECT_ID con l'ID del progetto host e SERVICE_PROJECT_NUMBER con il numero del progetto di servizio.

    gcloud projects add-iam-policy-binding HOST_PROJECT_ID \
        --member "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com" \
        --role "roles/compute.networkUser"
    

API

  1. Descrivi e poi registra i dettagli del criterio del progetto esistente. Sono necessari il criterio esistente e il valore etag.

    POST https://cloudresourcemanager.googleapis.com/v2/projects/HOST_PROJECT_ID:getIamPolicy
    

    Sostituisci HOST_PROJECT_ID con l'ID del progetto host che contiene la rete VPC condiviso.

  2. Elenca il tuo progetto per trovarne il numero.

    GET https://cloudresourcemanager.googleapis.com/v1/projects?filter=projectId="SERVICE_PROJECT_ID"
    

    Sostituisci SERVICE_PROJECT_ID con l'ID del progetto di servizio in cui si trova l'account di servizio.

  3. Crea un'associazione di criteri per designare gli account di servizio come amministratori di progetti di servizio.

    POST https://cloudresourcemanager.googleapis.com/v1/projects/HOST_PROJECT_ID:setIamPolicy
    {
      "bindings": [
        ...copy existing bindings
        {
          "members": [
            "serviceAccount:SERVICE_PROJECT_NUMBER@cloudservices.gserviceaccount.com"
          ],
          "role": "roles/compute.networkUser"
        },
      ],
      "etag": "ETAG",
      "version": 1,
      ...other existing policy details
    }
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto host che contiene la rete VPC condiviso.
    • SERVICE_PROJECT_NUMBER: il numero del progetto di servizio che contiene l'account di servizio.
    • ETAG: un identificatore univoco che hai ricevuto quando hai descritto il criterio esistente. Impedisce conflitti se vengono inviate più richieste di aggiornamento contemporaneamente.

    Per ulteriori informazioni, consulta il metodo projects.setIamPolicy.

Utilizza VPC condiviso

Dopo che un amministratore del VPC condiviso ha completato le attività di abilitazione di un progetto host, collegamento dei progetti di servizio necessari e definito gli amministratori dei progetti di servizio per tutte o alcune subnet del progetto host, gli amministratori dei progetti di servizio possono creare istanze, modelli e bilanciatori del carico interni nei progetti di servizio utilizzando le subnet del progetto host.

Tutte le attività in questa sezione devono essere eseguite da un amministratore del progetto di servizio.

È importante notare che un amministratore del VPC condiviso concede agli amministratori del progetto di servizio il ruolo Utente di rete Compute (roles/compute.networkUser) solo all'intero progetto host o solo ad alcune delle sue subnet. Gli amministratori dei progetti di servizio devono anche disporre degli altri ruoli necessari per gestire i rispettivi progetti di servizio. Ad esempio, un amministratore del progetto di servizio potrebbe anche essere un proprietario del progetto o dovrebbe avere almeno il ruolo Amministratore istanze Compute (roles/compute.instanceAdmin) per il progetto.

Elenca le subnet disponibili

Gli amministratori dei progetti di servizio possono elencare le subnet per cui hanno ricevuto l'autorizzazione seguendo questa procedura.

Console

Nella console Google Cloud, vai alla pagina VPC condiviso.

Vai a VPC condiviso

gcloud

  1. Se non lo hai già fatto, autentica gcloud come amministratore del progetto di servizio. Sostituisci SERVICE_PROJECT_ADMIN con il nome dell'amministratore del progetto di servizio:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Esegui questo comando, sostituendo HOST_PROJECT_ID con l'ID progetto del progetto host del VPC condiviso:

    gcloud compute networks subnets list-usable --project HOST_PROJECT_ID
    

    Nell'esempio seguente sono elencate le subnet disponibili nel progetto host project-1:

    $ gcloud compute networks subnets list-usable --project project-1
    
    PROJECT    REGION       NETWORK  SUBNET    RANGE          SECONDARY_RANGES
    project-1  us-west1     net-1    subnet-1  10.138.0.0/20
    project-1  us-central1  net-1    subnet-2  10.128.0.0/20  r-1 192.168.2.0/24
                                                              r-2 192.168.3.0/24
    project-1  us-east1     net-1    subnet-3  10.142.0.0/20
    

Per ulteriori informazioni, consulta il comando list-usable nella documentazione dell'SDK.

API

Elenca le subnet disponibili nel progetto host. Effettua la richiesta come amministratore del progetto di servizio.

GET https://compute.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/aggregated/subnetworks/listUsable

Sostituisci HOST_PROJECT_ID con l'ID del progetto host che contiene la rete VPC condiviso.

Per ulteriori informazioni, consulta il metodo subnetworks.listUsable.

Prenota un indirizzo IPv4 o IPv6 interno statico

Gli amministratori dei progetti di servizio possono prenotare un indirizzo IPv4 o IPv6 interno in una subnet di una rete VPC condiviso. L'oggetto di configurazione dell'indirizzo IP viene creato nel progetto di servizio, mentre il suo valore proviene dall'intervallo di indirizzi IPv4 disponibili nella subnet condivisa scelta.

Per prenotare un indirizzo IP interno autonomo nel progetto di servizio, completa i passaggi seguenti.

Console

  1. Configura un VPC condiviso.
  2. Nella console Google Cloud, vai alla pagina VPC condiviso.

    Vai a VPC condiviso

  3. Accedi come amministratore del VPC condiviso.

  4. Seleziona il progetto di servizio dal selettore dei progetti.

  5. Vai alla pagina Indirizzi IP selezionando Rete VPC > Indirizzi IP.

  6. Fai clic su Prenota indirizzo IP statico interno.

  7. Nel campo Nome, inserisci un nome per l'indirizzo IP.

  8. Nell'elenco Versione IP, seleziona la versione IP richiesta:

    • Per prenotare un indirizzo IPv4 interno statico, seleziona IPv4.
    • Per prenotare un indirizzo IPv6 interno statico, seleziona IPv6.
  9. Fai clic sul pulsante Reti condivise con me.

  10. Negli elenchi Rete e Subnet, seleziona rispettivamente una rete VPC e una subnet.

  11. Specifica come prenotare l'indirizzo IP:

    • Per gli indirizzi IPv4, per specificare un indirizzo IPv4 interno statico da prenotare, in Indirizzo IP statico, seleziona Fammi scegliere, quindi inserisci un indirizzo IP personalizzato. Altrimenti, il sistema assegna automaticamente un indirizzo IPv4 interno statico nella subnet.
    • Per gli indirizzi IPv6, il sistema assegna automaticamente un indirizzo IPv6 interno statico dall'intervallo di indirizzi IPv6 interno della subnet.
  12. (Facoltativo) Se vuoi condividere l'indirizzo IPv4 interno statico in diversi frontend, per Finalità, scegli Condiviso. La selezione predefinita è Non condiviso.

  13. Fai clic su Prenota.

gcloud

  1. Se non lo hai già fatto, esegui l'autenticazione in Google Cloud CLI come amministratore del progetto di servizio. Sostituisci SERVICE_PROJECT_ADMIN con il nome dell'amministratore del progetto di servizio:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Utilizza il comando compute addresses create.

    • Prenota gli indirizzi IPv4:

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV4
      
    • Prenota indirizzi IPv6:

      gcloud compute addresses create IP_ADDR_NAME \
          --project SERVICE_PROJECT_ID \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
          --region=REGION
          --ip-version=IPV6
      

    Sostituisci quanto segue:

    • IP_ADDR_NAME: un nome per l'oggetto indirizzo IPv4.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • REGION: la regione che contiene la subnet condivisa.
    • SUBNET: il nome della subnet condivisa.

Ulteriori dettagli per la creazione di indirizzi IP sono pubblicati nella documentazione dell'SDK.

API

Utilizza il metodo addresses.insert.

  • Prenota un indirizzo IPv4 interno statico come amministratore del progetto di servizio:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
    {
    "name": "ADDRESS_NAME",
    "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
    "addressType": "INTERNAL"
    }
    

Sostituisci quanto segue:

  • ADDRESS_NAME: un nome per l'indirizzo IP interno riservato.
  • HOST_PROJECT_ID: l'ID del progetto che contiene la rete VPC condiviso.
  • REGION: la regione in cui si troverà l'indirizzo IPv4 riservato e in cui si trova la subnet condivisa.
  • SERVICE_PROJECT_ID: l'ID del progetto di servizio in cui stai prenotando l'indirizzo IPv4.
  • SUBNET_NAME: il nome della subnet condivisa.

Per ulteriori informazioni, consulta il metodo addresses.insert.

Terraform

Puoi utilizzare un blocco di dati Terraform per specificare le informazioni sulla subnet host. Quindi utilizza una risorsa Terraform per prenotare un indirizzo IPv4 interno statico. Se ometti l'argomento facoltativo address, viene selezionato e riservato un indirizzo IPv4 disponibile.

Specifica la subnet host:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Prenota un indirizzo IPv4 dalla subnet del progetto host da utilizzare nel progetto di servizio:

resource "google_compute_address" "internal" {
  project      = var.service_project
  region       = "us-central1"
  name         = "int-ip"
  address_type = "INTERNAL"
  address      = "10.0.0.8"
  subnetwork   = data.google_compute_subnetwork.subnet.self_link
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Prenota un indirizzo IPv4 esterno statico

Una risorsa in un progetto di servizio può utilizzare un indirizzo IPv4 esterno statico a livello di regione definito nel progetto di servizio o nel progetto host. Di conseguenza, una risorsa nei progetti di servizio collegati può utilizzare un indirizzo IPv4 esterno statico a livello di regione riservato nel progetto host.

Prenota un indirizzo IPv6 esterno statico

Gli amministratori dei progetti di servizio possono prenotare un indirizzo IPv6 esterno statico in un progetto di servizio. L'oggetto di configurazione dell'indirizzo IPv6 viene creato nel progetto di servizio, mentre il suo valore proviene dall'intervallo di indirizzi IPv6 disponibili nella subnet condivisa scelta.

Console

Puoi prenotare un indirizzo IPv6 esterno autonomo nel progetto di servizio utilizzando la console Google Cloud:

  1. Configura un VPC condiviso.
  2. Nella console Google Cloud, vai alla pagina VPC condiviso.
    Vai alla pagina VPC condiviso
  3. Accedi come amministratore del VPC condiviso.
  4. Seleziona il progetto di servizio dal selettore dei progetti.
  5. Per andare alla pagina Indirizzi IP, seleziona Rete VPC > Indirizzi IP.
  6. Fai clic su Prenota indirizzo IP statico esterno.
  7. Scegli un nome per il nuovo indirizzo.
  8. Specifica se il livello di servizio di rete è Premium o Standard. La prenotazione di indirizzi statici IPv6 è supportata solo nel livello Premium.
  9. In Versione IP, seleziona IPv6.
  10. Specifica se questo indirizzo IP è regionale o globale.
    • Se intendi prenotare un indirizzo IP statico per un bilanciatore del carico globale, scegli Globale.
    • Se prenoti un indirizzo IP statico per un'istanza o un bilanciatore del carico a livello di regione, scegli A livello di regione, quindi seleziona la regione in cui creare l'indirizzo.
  11. Scegli le seguenti opzioni:
    • Reti in questo progetto: scegli questa opzione se vuoi prenotare un indirizzo IPv6 esterno in una subnet della stessa rete Virtual Private Cloud (VPC) in cui prenoti l'indirizzo IPv6.
    • Reti condivise con me: scegli questa opzione se vuoi prenotare un indirizzo IPv6 esterno in una subnet di una rete VPC condiviso.
  12. In base alla tua scelta, scegli quanto segue:

    • Rete: la rete VPC
    • Subnet: la subnet da cui assegnare l'indirizzo IPv6 statico a livello di regione
    • Tipo di endpoint: scegli Istanza VM o Bilanciatore del carico di rete
  13. (Facoltativo) Se hai scelto Istanza VM come tipo di endpoint, seleziona un'istanza VM a cui collegare l'indirizzo IPv6.

  14. Fai clic su Prenota.

gcloud

  1. Se non lo hai già fatto, autentica gcloud come amministratore del progetto di servizio. Sostituisci SERVICE_PROJECT_ADMIN con il nome dell'amministratore del progetto di servizio:

    gcloud auth login SERVICE_PROJECT_ADMIN
    
  2. Utilizza il comando gcloud compute addresses create:

    gcloud compute addresses create IP_ADDR_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --region=REGION \
        --ip-version=IPV6 \
        --endpoint-type=[VM | NETLB]
    

    Sostituisci quanto segue:

    • IP_ADDR_NAME: un nome per l'oggetto indirizzo IPv6.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • SUBNET: il nome della subnet condivisa.
    • REGION: la regione che contiene la subnet condivisa.

API

Per prenotare un indirizzo IPv6 interno statico come amministratore del progetto di servizio, utilizza il metodo addresses.insert:

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/addresses
{
  "name": "ADDRESS_NAME",
  "ipVersion": "IPV6",
  "ipv6EndpointType": "VM|LB",
  "networkTier": "PREMIUM",
  "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
  "addressType": "EXTERNAL"
}

Sostituisci quanto segue:

  • SERVICE_PROJECT_ID: l'ID del progetto di servizio in cui stai prenotando l'indirizzo IPv6.
  • REGION: la regione in cui si trovano l'indirizzo IPv6 riservato e la subnet condivisa.
  • ADDRESS_NAME: un nome dell'indirizzo IPv6 esterno statico riservato.
  • HOST_PROJECT_ID: l'ID del progetto che contiene la rete VPC condiviso.
  • SUBNET_NAME: il nome della subnet condivisa.

Creazione di un'istanza

Quando utilizzi un VPC condiviso per creare un'istanza, tieni presente quanto segue:

  • Il processo standard per la creazione di un'istanza prevede la selezione di una zona, una rete e una subnet. La subnet e la zona selezionate devono trovarsi nella stessa regione. Quando un amministratore del progetto di servizio crea un'istanza utilizzando una subnet da una rete VPC condiviso, la zona selezionata per l'istanza deve trovarsi nella stessa regione della subnet selezionata.

    Quando crei un'istanza con un indirizzo IPv4 interno statico riservato, la subnet e la regione sono già selezionate quando viene creato l'indirizzo IPv4 statico. In questa sezione viene fornito un esempio di tipo gcloud per la creazione di un'istanza con un indirizzo IPv4 interno statico.

  • Gli amministratori dei progetti di servizio possono creare istanze solo utilizzando subnet per cui hanno ricevuto l'autorizzazione. Per determinare quali subnet sono disponibili, consulta Elenco delle subnet disponibili.

  • Quando Google Cloud riceve una richiesta di creazione di un'istanza in una subnet di una rete VPC condiviso, controlla se l'entità IAM che effettua la richiesta dispone dell'autorizzazione per utilizzare quella subnet condivisa. Se il controllo non va a buon fine, l'istanza non viene creata e Google Cloud restituisce un errore di autorizzazione. Per assistenza, contatta l'amministratore del VPC condiviso.

  • Puoi creare un'istanza a doppio stack se crei l'istanza in una subnet a due stack. Le subnet a doppio stack sono supportate solo su reti VPC in modalità personalizzata. Il tipo di accesso IPv6 della subnet determina se l'indirizzo IPv6 assegnato alla VM è un indirizzo IPv6 interno o esterno.

Per creare istanze a doppio stack in una subnet condivisa, utilizza Google Cloud CLI o l'API. Non puoi creare un'istanza a doppio stack in una subnet condivisa con la console Google Cloud.

Console

  1. Configura un VPC condiviso.
  2. Nella console Google Cloud, vai alla pagina VPC condiviso.

    Vai a VPC condiviso

  3. Accedi come amministratore del VPC condiviso.

  4. Seleziona il progetto di servizio dal selettore dei progetti.

  5. Per andare alla pagina Crea un'istanza, seleziona Compute Engine > Istanze VM > Crea istanza.

  6. Specifica un nome per l'istanza.

  7. In Regione, seleziona una regione che contiene una subnet condivisa.

  8. Fai clic su Networking in Opzioni avanzate.

  9. In Interfacce di rete, fai clic sul pulsante di opzione Reti condivise con me.

  10. Nell'elenco Subnet condivisa, seleziona la subnet richiesta in cui vuoi creare l'istanza:

    • Per gli indirizzi IPv4, seleziona una subnet a stack singolo.
    • Per gli indirizzi IPv6, seleziona una subnet a doppio stack con il tipo di accesso IPv6 richiesto.
  11. Seleziona il tipo di stack IP:

    • Per gli indirizzi IPv4, seleziona IPv4 (stack singolo).
    • Per gli indirizzi IPv6, seleziona IPv4 e IPv6 (stack doppio).
  12. Specifica eventuali altri parametri necessari per l'istanza.

  13. Fai clic su Crea.

gcloud

  • Crea un'istanza con un indirizzo IPv4 interno temporaneo in una subnet condivisa di una rete VPC condiviso:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • REGION: la regione che contiene la subnet condivisa.
    • SUBNET: il nome della subnet condivisa.
    • ZONE: una zona nella regione specificata. .
  • Crea un'istanza con un indirizzo IPv4 interno statico riservato in una rete VPC condiviso:

    1. Prenota un indirizzo IPv4 interno statico nel progetto di servizio dall'intervallo di indirizzi disponibili del progetto host.
    2. Crea l'istanza:

      gcloud compute instances create INSTANCE_NAME \
          --project SERVICE_PROJECT_ID \
          --private-network-ip IP_ADDR_NAME \
          --zone ZONE \
          --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
      

      Sostituisci quanto segue:

      • INSTANCE_NAME: il nome dell'istanza.
      • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
      • IP_ADDR_NAME: il nome dell'indirizzo IP statico.
      • ZONE: una zona nella stessa regione di IP_ADDR_NAME.
      • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
      • REGION: la regione che contiene la subnet condivisa.
      • SUBNET: nome della subnet condivisa associata all'indirizzo IPv4 interno statico.
  • Crea un'istanza con un indirizzo IPv4 interno temporaneo e un indirizzo IPv6 temporaneo:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --zone ZONE
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • REGION: la regione che contiene la subnet condivisa.
    • SUBNET: il nome della subnet condivisa.
    • ZONE: una zona nella regione specificata.
  • Crea un'istanza con un indirizzo IPv6 esterno statico riservato:

    gcloud compute instances create INSTANCE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
        --ipv6-address IPV6_ADDRESS \
        --ipv6-prefix-length=96 \
        --ipv6-network-tier PREMIUM \
        --zone ZONE
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: il nome dell'istanza.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • REGION: la regione che contiene la subnet condivisa.
    • SUBNET: il nome della subnet condivisa.
    • IPV6_ADDRESS: l'indirizzo IPv6 da assegnare alla VM.
    • ZONE: una zona nella regione specificata.

API

  • Per creare un'istanza con un indirizzo IPv4 interno temporaneo, specifica solo la subnet:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: un nome per l'istanza.
    • HOST_PROJECT_ID: l'ID del progetto che contiene la rete VPC condiviso.
    • MACHINE_TYPE: un tipo di macchina per l'istanza.
    • REGION: la regione che contiene la subnet condivisa.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • SOURCE_IMAGE: un'immagine per l'istanza.
    • SUBNET: il nome della subnet condivisa.
    • ZONE: una zona nella regione specificata.

    Per ulteriori informazioni, consulta il metodo instances.insert.

  • Per creare un'istanza con un indirizzo IPv4 interno riservato, specifica la subnet e il nome dell'indirizzo IPv4 riservato:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "networkIP": "projects/SERVICE_PROJECT_ID/regions/REGION/addresses/ADDRESS_NAME"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Sostituisci quanto segue:

    • ADDRESS_NAME: il nome dell'indirizzo IPv4 interno prenotato.
    • INSTANCE_NAME: un nome per l'istanza.
    • HOST_PROJECT_ID: l'ID del progetto che contiene la rete VPC condiviso.
    • MACHINE_TYPE: un tipo di macchina per l'istanza.
    • REGION: la regione che contiene la subnet condivisa.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • SOURCE_IMAGE: un'immagine per l'istanza.
    • SUBNET: il nome della subnet condivisa.
    • ZONE: una zona nella regione specificata.

    Per ulteriori informazioni, consulta il metodo instances.insert.

  • Per creare un'istanza con un indirizzo IPv4 interno temporaneo e un indirizzo IPv6 temporaneo, specifica la subnet e il tipo di stack:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/zones/ZONE/instances
    {
      "machineType": "MACHINE_TYPE",
      "name": "INSTANCE_NAME",
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPv4_IPv6"
        }
      ],
      "disks": [
        {
          "boot": true,
          "initializeParams": {
            "sourceImage": "SOURCE_IMAGE"
          }
        }
      ]
    }
    

    Sostituisci quanto segue:

    • INSTANCE_NAME: un nome per l'istanza.
    • HOST_PROJECT_ID: l'ID del progetto che contiene la rete VPC condiviso.
    • MACHINE_TYPE: un tipo di macchina per l'istanza.
    • REGION: la regione che contiene la subnet condivisa.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • SOURCE_IMAGE: un'immagine per l'istanza.
    • SUBNET: il nome della subnet condivisa.
    • ZONE: una zona nella regione specificata.

    Per ulteriori informazioni, consulta il metodo instances.insert.

Terraform

Puoi utilizzare un blocco di dati Terraform per specificare le informazioni sulla subnet host. Quindi utilizza una risorsa Terraform per creare un'istanza VM in un progetto di servizio.

Specifica la subnet host:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Crea un'istanza VM in un progetto di servizio con un indirizzo IPv4 temporaneo dalla subnet condivisa del progetto host:

resource "google_compute_instance" "ephemeral_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "my-vm"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

Crea un'istanza VM in un progetto di servizio con un indirizzo IPv4 statico riservato dalla subnet condivisa del progetto host:

resource "google_compute_instance" "reserved_ip" {
  project      = var.service_project
  zone         = "us-central1-a"
  name         = "reserved-ip-instance"
  machine_type = "e2-medium"
  boot_disk {
    initialize_params {
      image = "debian-cloud/debian-9"
    }
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
    network_ip = google_compute_address.internal.address
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Crea un modello di istanza

Quando utilizzi il VPC condiviso per creare un modello di istanza, tieni presente quanto segue:

  • Il processo per creare un modello di istanza prevede la selezione di una rete e una subnet.

    • I modelli creati per l'utilizzo in una rete VPC condiviso in modalità personalizzata devono specificare sia la rete sia una subnet.

    • Modelli creati per l'utilizzo in modalità automatica La rete VPC condiviso può facoltativamente rinviare la selezione di una subnet. In questi casi, viene selezionata automaticamente una subnet nella stessa regione di qualsiasi gruppo di istanze gestite che utilizza il modello. (per definizione, le reti in modalità automatica hanno una subnet in ogni regione).

  • Quando un'entità IAM crea un modello di istanza, Google Cloud non esegue un controllo delle autorizzazioni per verificare se l'entità può utilizzare la subnet specificata. Questo controllo delle autorizzazioni viene sempre posticipato quando viene richiesto un gruppo di istanze gestite che utilizza il modello.

  • Puoi creare un modello di istanza a doppio stack se lo crei in una subnet a due stack. Le subnet a doppio stack sono supportate solo su reti VPC in modalità personalizzata. Il tipo di accesso IPv6 della subnet determina se l'indirizzo IPv6 assegnato alla VM è un indirizzo IPv6 interno o esterno.

    Per creare un modello di istanza a doppio stack in una subnet condivisa, utilizza Google Cloud CLI o l'API. Non puoi creare un modello di istanza a doppio stack in una subnet condivisa con la console Google Cloud.

Console

  1. Configura un VPC condiviso.
  2. Nella console Google Cloud, vai alla pagina VPC condiviso.
    Vai alla pagina VPC condiviso
  3. Accedi come amministratore del VPC condiviso.
  4. Seleziona il progetto di servizio dal selettore dei progetti.
  5. Per andare alla pagina Crea un modello di istanza, seleziona Compute Engine > Modelli di istanza > Crea modelli di istanza.
  6. Specifica un nome per il modello di istanza.
  7. Fai clic su Networking in Opzioni avanzate.
  8. In Interfacce di rete, fai clic sul pulsante di opzione Reti condivise con me.
  9. Nell'elenco Subnet condivisa, seleziona la subnet richiesta in cui vuoi creare il modello di istanza:
    • Per gli indirizzi IPv4, seleziona una subnet a stack singolo.
    • Per gli indirizzi IPv6, seleziona una subnet a doppio stack con il tipo di accesso IPv6 richiesto.
  10. Seleziona il tipo di stack IP:
    • Per gli indirizzi IPv4, seleziona IPv4 (stack singolo).
    • Per gli indirizzi IPv6, seleziona IPv4 e IPv6 (stack doppio).
  11. Specifica eventuali altri parametri necessari per il modello di istanza.
  12. Fai clic su Crea.

gcloud

  • Crea un modello di istanza solo IPv4 da utilizzare in qualsiasi subnet creata automaticamente di una rete VPC condiviso in modalità automatica:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --network projects/HOST_PROJECT_ID/global/networks/NETWORK
    

    Sostituisci quanto segue:

    • TEMPLATE_NAME: il nome del modello.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • NETWORK: il nome della rete VPC condiviso.
  • Per creare un modello di istanza solo IPv4 per una subnet creata manualmente in una rete VPC condiviso (in modalità automatica o personalizzata):

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Sostituisci quanto segue:

    • TEMPLATE_NAME: il nome del modello.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • REGION: la regione che contiene la subnet condivisa.
    • SUBNET: il nome della subnet condivisa.
  • Crea un modello di istanza a doppio stack che utilizza una subnet in una rete VPC condiviso in modalità personalizzata:

    gcloud compute instance-templates create TEMPLATE_NAME \
        --project SERVICE_PROJECT_ID \
        --stack-type IPV4_IPV6 \
        --region REGION \
        --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET
    

    Sostituisci quanto segue:

    • TEMPLATE_NAME: il nome del modello.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
    • REGION: la regione che contiene la subnet condivisa.
    • SUBNET: il nome della subnet condivisa.

API

  • Per creare un modello di istanza solo IPv4 che utilizzi una qualsiasi subnet creata automaticamente di una rete VPC condiviso in modalità automatica, specifica la rete VPC:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "network": "projects/HOST_PROJECT_ID/global/networks/NETWORK"
        }
      ]
    ...
    }
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto che contiene la rete VPC condiviso.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • NETWORK: il nome della rete VPC condiviso.

    Per ulteriori informazioni, consulta il metodo instanceTemplates.insert.

  • Per creare un modello di istanza solo IPv4 che utilizza una subnet creata manualmente in una rete VPC condiviso (modalità automatica o personalizzata), specifica la subnet:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME"
        }
      ]
    ...
    }
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto che contiene la rete VPC condiviso.
    • REGION: la regione che contiene la subnet condivisa.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • SUBNET_NAME: il nome della subnet condivisa.

    Per ulteriori informazioni, consulta il metodo instanceTemplates.insert.

  • Per creare un modello di istanza a doppio stack che utilizza una subnet in una rete VPC condiviso in modalità personalizzata, specifica la subnet e il tipo di stack:

    POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/global/instanceTemplates
    {
    "properties": {
      "networkInterfaces": [
        {
          "subnetwork": "projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET_NAME",
          "stackType": "IPV4_IPV6"
        }
      ]
    ...
    }
    

    Sostituisci quanto segue:

    • HOST_PROJECT_ID: l'ID del progetto che contiene la rete VPC condiviso.
    • REGION: la regione che contiene la subnet condivisa.
    • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
    • SUBNET_NAME: il nome della subnet condivisa.

    Per ulteriori informazioni, consulta il metodo instanceTemplates.insert.

Terraform

Puoi utilizzare un blocco di dati Terraform per specificare le informazioni sulla subnet host. Quindi utilizza una risorsa Terraform per creare un modello di istanza VM. Gli indirizzi IPv4 delle VM provengono dalla subnet condivisa del progetto host.

La subnet deve esistere nella stessa regione in cui verranno create le istanze VM.

Specifica la subnet host:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Crea un modello di istanza VM nel progetto di servizio:

resource "google_compute_instance_template" "default" {
  project      = var.service_project
  name         = "appserver-template"
  description  = "This template is used to create app server instances."
  machine_type = "n1-standard-1"
  disk {
    source_image = "debian-cloud/debian-9"
  }
  network_interface {
    subnetwork = data.google_compute_subnetwork.subnet.self_link
  }
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Creare un gruppo di istanze gestite

Quando crei un gruppo di istanze gestite utilizzando il VPC condiviso:

  • I gruppi di istanze gestite utilizzati con il VPC condiviso richiedono rendere l'account di servizio API di Google come amministratore del progetto di servizio poiché attività come la creazione automatica delle istanze tramite scalabilità automatica vengono eseguite da quell'account di servizio.

  • Il processo standard per la creazione di un gruppo di istanze gestite prevede la selezione di una zona o di una regione, a seconda del tipo di gruppo e di un modello di istanza. I dettagli di rete e subnet sono legati al modello di istanza. I modelli di istanza idonei sono limitati a quelli che fanno riferimento a subnet nella stessa regione utilizzati dal gruppo di istanze gestite.

  • Gli amministratori dei progetti di servizio possono creare solo gruppi di istanze gestite le cui istanze membri utilizzano subnet per le quali hanno l'autorizzazione. Poiché i dettagli della rete e della subnet sono associati al modello di istanza, gli amministratori dei progetti di servizio possono utilizzare solo modelli che fanno riferimento a subnet che sono autorizzati a utilizzare.

  • Quando Google Cloud riceve una richiesta per creare un gruppo di istanze gestite, controlla se l'entità IAM che effettua la richiesta dispone dell'autorizzazione per utilizzare la subnet (nella stessa regione del gruppo) specificata nel modello di istanza. Se il controllo non va a buon fine, il gruppo di istanze gestite non viene creato e Google Cloud restituisce un errore: Required 'compute.subnetworks.use' permission for 'projects/SUBNET_NAME.

    Elenca le subnet disponibili per determinare quali possono essere utilizzate e contatta l'amministratore del VPC condiviso se l'account di servizio richiede un accesso aggiuntivo. Per ulteriori informazioni, consulta Account di servizio come amministratori di progetti di servizio.

Per saperne di più, consulta Creazione di gruppi di istanze gestite nella documentazione di Compute Engine.

Creazione di un bilanciatore del carico HTTP(S)

Esistono molti modi per configurare bilanciatori del carico delle applicazioni esterni all'interno di una rete VPC condiviso. Indipendentemente dal tipo di deployment, tutti i componenti del bilanciatore del carico devono trovarsi nella stessa organizzazione e nella stessa rete VPC condiviso.

Per saperne di più sulle architetture VPC condiviso supportate, consulta quanto segue:

Crea un bilanciatore del carico di rete passthrough interno

L'esempio seguente illustra cosa devi considerare quando crei un bilanciatore del carico di rete passthrough interno in una rete VPC condiviso. Gli amministratori dei progetti di servizio possono creare un bilanciatore del carico di rete passthrough interno che utilizza una subnet (nel progetto host) a cui hanno accesso. La regola di forwarding interna del bilanciatore del carico è definita nel progetto di servizio, ma il suo riferimento subnet rimanda a una subnet in una rete VPC condiviso del progetto host.

Prima di creare un bilanciatore del carico di rete passthrough interno in un ambiente VPC condiviso, consulta la pagina relativa all'architettura del VPC condiviso.

Console

  1. Vai alla pagina Bilanciamento del carico nella console Google Cloud.
    Vai alla pagina Bilanciamento del carico

  2. Crea il bilanciatore del carico TCP/UDP interno, apportando la seguente modifica: nella sezione Configura servizi frontend, seleziona la subnet VPC condiviso di cui hai bisogno dalla sezione Reti condivise da altri progetti del menu Subnet.

  3. Completa la creazione del bilanciatore del carico.

gcloud

Quando crei la regola di forwarding interno, specifica una subnet nel progetto host con il flag --subnet:

gcloud compute forwarding-rules create FR_NAME \
    --project SERVICE_PROJECT_ID \
    --load-balancing-scheme internal \
    --region REGION \
    --ip-protocol IP_PROTOCOL \
    --ports PORT,PORT,... \
    --backend-service BACKEND_SERVICE_NAME \
    --subnet projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET \
    --address INTERNAL_IP

Sostituisci quanto segue:

  • FR_NAME: il nome della regola di forwarding.
  • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
  • REGION: la regione che contiene la subnet condivisa.
  • IP_PROTOCOL: TCP o UDP, corrispondente al protocollo del servizio di backend del bilanciatore del carico.
  • PORT: la porta numerica o l'elenco di porte per il bilanciatore del carico.
  • BACKEND_SERVICE_NAME: il nome del servizio di backend (creato già nell'ambito della procedura generale per la creazione di un bilanciatore del carico di rete passthrough interno).
  • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
  • SUBNET: il nome della subnet condivisa.
  • INTERNAL_IP: un indirizzo IP interno nella subnet condivisa (se non specificato, ne verrà selezionato uno disponibile).

Per ulteriori opzioni, consulta il comando gcloud compute forwarding-rules create.

API

Crea la regola di forwarding interno e specifica una subnet nel progetto host.

POST https://compute.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/REGION/forwardingRules
{
  "name": "FR_NAME",
  "IPAddress": "IP_ADDRESS",
  "IPProtocol": "PROTOCOL",
  "ports": [ "PORT", ... ],
  "loadBalancingScheme": "INTERNAL",
  "subnetwork": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/regions/REGION/subnetworks/SUBNET",
  "network": "https://www.googleapis.com/compute/v1/projects/HOST_PROJECT_ID/global/networks/NETWORK_NAME",
  "backendService": "https://www.googleapis.com/compute/v1/projects/SERVICE_PROJECT_ID/regions/us-west1/backendServices/BE_NAME",
  "networkTier": "PREMIUM"
}

Sostituisci quanto segue:

  • BE_NAME: il nome del servizio di backend (creato già nell'ambito della procedura generale per la creazione di un bilanciatore del carico di rete passthrough interno).
  • FR_NAME: un nome per la regola di forwarding.
  • HOST_PROJECT_ID: l'ID del progetto host del VPC condiviso.
  • IP_ADDRESS: un indirizzo IP interno nella subnet condivisa.
  • IP_PROTOCOL: TCP o UDP, corrispondente al protocollo del servizio di backend del bilanciatore del carico.
  • PORT: la porta numerica o l'elenco di porte per il bilanciatore del carico.
  • REGION: la regione che contiene la subnet condivisa.
  • SERVICE_PROJECT_ID: l'ID del progetto di servizio.
  • SUBNET: il nome della subnet condivisa.

Per ulteriori informazioni, consulta il metodo forwardingRules.insert.

Terraform

Puoi utilizzare un blocco di dati Terraform per specificare la subnet host e la rete host. Quindi utilizza una risorsa Terraform per creare la regola di forwarding.

Specifica la rete host:

data "google_compute_network" "network" {
  name    = "my-network-123"
  project = var.project
}

Specifica la subnet host:

data "google_compute_subnetwork" "subnet" {
  name    = "my-subnet-123"
  project = var.project
  region  = "us-central1"
}

Nel progetto di servizio, crea una regola di forwarding nella rete e nella subnet del progetto host:

resource "google_compute_forwarding_rule" "default" {
  project               = var.service_project
  name                  = "l4-ilb-forwarding-rule"
  backend_service       = google_compute_region_backend_service.default.id
  region                = "europe-west1"
  ip_protocol           = "TCP"
  load_balancing_scheme = "INTERNAL"
  all_ports             = true
  allow_global_access   = true
  network               = data.google_compute_network.network.self_link
  subnetwork            = data.google_compute_subnetwork.subnet.self_link
}

Per scoprire come applicare o rimuovere una configurazione Terraform, consulta Comandi Terraform di base.

Passaggi successivi