Accedi ai servizi pubblicati tramite endpoint

Questo documento spiega come accedere ai servizi in un'altra rete VPC utilizzando gli endpoint Private Service Connect. Puoi connetterti ai tuoi servizi o a quelli forniti da altri produttori di servizi, anche da Google.

Per ulteriori informazioni sui servizi, consulta la pagina relativa alla pubblicazione di servizi gestiti.

Ruoli

Il seguente ruolo IAM fornisce le autorizzazioni necessarie per eseguire le attività descritte in questa guida.

Attività Ruoli
Crea un endpoint Entrambi i ruoli:
Amministratore rete Compute (roles/compute.networkAdmin) e
Editor directory servizio (roles/servicedirectory.editor)
Configura automaticamente o manualmente le voci DNS per un endpoint Amministratore DNS (roles/dns.admin)

Prima di iniziare

  • Leggi Informazioni sulla connessione ai servizi tramite endpoint, incluse le limitazioni.

  • Devi enable l'API Compute Engine nel tuo progetto.

  • Devi enable l'API Service Directory nel tuo progetto.

  • Devi enable l'API Cloud DNS nel tuo progetto.

  • Le regole firewall in uscita devono consentire il traffico verso l'indirizzo IP interno dell'endpoint. La regola firewall implicata per il traffico in uscita consente il traffico in uscita verso qualsiasi indirizzo IP di destinazione.

    Se hai creato regole firewall di negazione del traffico in uscita nella tua rete VPC o se hai creato criteri firewall gerarchici che modificano il comportamento in uscita consentito implicito, l'accesso all'endpoint potrebbe essere interessato. Crea una regola o un criterio firewall di autorizzazione specifica in uscita per consentire il traffico verso la destinazione dell'indirizzo IP interno dell'endpoint di servizio.

  • Devi avere l'URI del collegamento al servizio. Ad esempio, projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

Crea un endpoint

Un endpoint si connette ai servizi in un'altra rete VPC utilizzando una regola di forwarding di Private Service Connect. Ogni regola di forwarding viene conteggiata nella quota per progetto delle regole di forwarding di Private Service Connect affinché accedano ai servizi in un'altra rete VPC.

Quando utilizzi Private Service Connect per connetterti ai servizi in un'altra rete VPC, scegli un indirizzo IP da una sottorete normale nella tua rete VPC.

L'indirizzo IP deve trovarsi nella stessa regione del collegamento al servizio del producer di servizi. L'indirizzo IP viene conteggiato ai fini della quota del progetto per gli indirizzi IP interni.

Quando crei un endpoint, questo viene registrato automaticamente in Service Directory, utilizzando uno spazio dei nomi di tua scelta oppure lo spazio dei nomi predefinito goog-psc-default.

Se vuoi rendere l'endpoint disponibile da più di una regione, attiva l'accesso globale.

Puoi aggiornare il campo di accesso globale degli endpoint solo per i servizi pubblicati. Se vuoi aggiornare altri campi, elimina l'endpoint e creane uno nuovo.

Console

  1. Nella console Google Cloud, vai alla pagina Private Service Connect.

    Vai a Private Service Connect

  2. Fai clic sulla scheda Endpoint connessi.

  3. Fai clic su Connetti endpoint.

  4. In Destinazione, seleziona Servizio pubblicato.

  5. In Servizio di destinazione, inserisci l'URI del collegamento al servizio a cui vuoi connetterti.

    L'URI del collegamento al servizio ha il seguente formato: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

  6. In Nome endpoint, inserisci un nome da utilizzare per l'endpoint.

  7. Seleziona una rete per l'endpoint.

  8. Seleziona una Subnet per l'endpoint.

  9. Seleziona un indirizzo IP per l'endpoint. Se hai bisogno di un nuovo indirizzo IP, puoi crearne uno:

    1. Fai clic sul menu a discesa Indirizzo IP e seleziona Crea indirizzo IP.
    2. Inserisci i valori Nome e Descrizione (facoltativo) dell'indirizzo IP.
    3. Per Indirizzo IP statico, seleziona Assegna automaticamente o Fammi scegliere.

      Se hai selezionato Fammi scegliere, inserisci l'Indirizzo IP personalizzato che vuoi utilizzare.

    4. Fai clic su Prenota.

  10. Per rendere l'endpoint disponibile da qualsiasi regione, seleziona Abilita accesso globale.

  11. Seleziona uno spazio dei nomi dall'elenco a discesa o crea un nuovo spazio dei nomi.

    La regione viene compilata in base alla subnet selezionata.

  12. Fai clic su Aggiungi endpoint.

gcloud

  1. Prenota un indirizzo IP interno da assegnare all'endpoint.

    gcloud compute addresses create ADDRESS_NAME \
        --region=REGION \
        --subnet=SUBNET
    

    Sostituisci quanto segue:

    • ADDRESS_NAME: il nome da assegnare all'indirizzo IP prenotato.

    • REGION: la regione dell'indirizzo IP dell'endpoint. Deve essere la stessa regione che contiene il collegamento al servizio del producer di servizi.

    • SUBNET: il nome della subnet per l'indirizzo IP dell'endpoint.

  2. Trova l'indirizzo IP prenotato.

    gcloud compute addresses list --filter="name=ADDRESS_NAME"
    
  3. Crea una regola di forwarding per connettere l'endpoint al collegamento del servizio del producer di servizi. Per impostazione predefinita, gli endpoint sono disponibili solo nella rispettiva regione. Per rendere disponibile un endpoint da qualsiasi area geografica, utilizza il flag --allow-psc-global-access.

    • Crea un endpoint a cui è possibile accedere solo dalla relativa regione.

      gcloud compute forwarding-rules create ENDPOINT_NAME \
        --region=REGION \
        --network=NETWORK_NAME \
        --address=ADDRESS_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT \
        [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
      
    • Crea un endpoint a cui è possibile accedere da qualsiasi regione.

      gcloud compute forwarding-rules create ENDPOINT_NAME \
        --region=REGION \
        --network=NETWORK_NAME \
        --address=ADDRESS_NAME \
        --target-service-attachment=SERVICE_ATTACHMENT \
        --allow-psc-global-access \
        [ --service-directory-registration=projects/PROJECT_ID/locations/REGION/namespaces/NAMESPACE ]
      

    Sostituisci quanto segue:

    • ENDPOINT_NAME: il nome da assegnare all'endpoint.

    • REGION: la regione dell'endpoint. Deve essere la stessa regione che contiene il collegamento al servizio del producer di servizi.

    • NETWORK_NAME: il nome della rete VPC per l'endpoint.

    • ADDRESS_NAME: il nome dell'indirizzo riservato.

    • SERVICE_ATTACHMENT: l'URI del collegamento al servizio del producer di servizi. Ad esempio: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • PROJECT_ID: l'ID progetto.

    • NAMESPACE: lo spazio dei nomi di Service Directory che vuoi utilizzare. Se specifichi uno spazio dei nomi che non esiste, viene creato quest'ultimo.

      Se ometti il flag --service-directory-registration, viene utilizzato lo spazio dei nomi predefinito di goog-psc-default.

API

  1. Prenota un indirizzo IP interno da assegnare all'endpoint.

    POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/addresses
    
    {
      "name": ADDRESS_NAME,
      "addressType": "INTERNAL",
      "subnetwork": SUBNET_URI
    }
    

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.

    • ADDRESS_NAME: il nome da assegnare all'indirizzo IP prenotato.

    • SUBNET_URI: la subnet per l'indirizzo IP. Utilizza il metodo subnetworks.list o gcloud compute networks subnets list --uri per trovare gli URL delle tue reti.

  2. Crea una regola di forwarding per connettere l'endpoint al collegamento del servizio del producer di servizi. Per impostazione predefinita, gli endpoint sono disponibili solo nella rispettiva regione. Per rendere disponibile un endpoint da qualsiasi area geografica, imposta allowPscGlobalAccess su true.

    • Crea un endpoint a cui è possibile accedere solo dalla relativa regione.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
      {
        "name": ENDPOINT_NAME,
        "IPAddress": ADDRESS_URI,
        "target": SERVICE_ATTACHMENT,
        "network": NETWORK_URI,
        "serviceDirectoryRegistrations": [
            {
                "namespace": NAMESPACE,
            }
        ],
      }
      
    • Crea un endpoint a cui è possibile accedere da qualsiasi regione.

      POST https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules
      {
        "name": ENDPOINT_NAME,
        "IPAddress": ADDRESS_URI,
        "target": SERVICE_ATTACHMENT,
        "network": NETWORK_URI,
        "allowPscGlobalAccess": true,
        "serviceDirectoryRegistrations": [
            {
                "namespace": NAMESPACE,
            }
        ],
      }
      

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID progetto.

    • REGION: la regione dell'endpoint.

    • ENDPOINT_NAME: il nome da assegnare all'endpoint.

    • ADDRESS_URI: l'URI dell'indirizzo riservato nella rete associata. Utilizza il metodo addresses.list o gcloud compute addresses list --uri per trovare l'URL del tuo indirizzo prenotato.

    • SERVICE_ATTACHMENT: l'URI del collegamento al servizio del producer di servizi. Ad esempio: projects/SERVICE_PROJECT/regions/REGION/serviceAttachments/SERVICE_NAME

    • NETWORK_URI: la rete VPC per l'endpoint. Utilizza il metodo network.list o gcloud compute networks list --uri per trovare l'URI della tua rete.

    • NAMESPACE: lo spazio dei nomi per l'endpoint. Se specifichi uno spazio dei nomi che non esiste, viene creato lo spazio dei nomi. Se ometti il campo namespace, viene assegnato lo spazio dei nomi predefinito di goog-psc-default.

Elenco endpoint

Puoi elencare tutti gli endpoint configurati.

Console

  1. Nella console Google Cloud, vai alla pagina Private Service Connect.

    Vai a Private Service Connect

  2. Fai clic sulla scheda Endpoint connessi.

    Vengono visualizzati gli endpoint.

gcloud

gcloud compute forwarding-rules list \
    --filter 'target~serviceAttachments'

L'output è simile al seguente:

NAME  REGION  IP_ADDRESS  IP_PROTOCOL  TARGET
RULE          IP          TCP          REGION/serviceAttachments/SERVICE_NAME

API

Questa chiamata API restituisce tutte le regole di forwarding, non solo gli endpoint utilizzati per accedere ai servizi.

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules

Sostituisci quanto segue:

  • PROJECT_ID: il progetto che contiene l'endpoint.
  • REGION: la regione dell'endpoint.

Visualizza dettagli endpoint

Puoi visualizzare tutti i dettagli di configurazione di un endpoint, tra cui lo stato della connessione.

Console

  1. Nella console Google Cloud, vai alla pagina Private Service Connect.

    Vai a Private Service Connect

  2. Fai clic sulla scheda Endpoint connessi.

  3. Fai clic sull'endpoint che vuoi visualizzare.

gcloud

gcloud compute forwarding-rules describe \
    ENDPOINT_NAME --region=REGION

Sostituisci quanto segue:

  • ENDPOINT_NAME: il nome dell'endpoint.
  • REGION: la regione dell'endpoint.

API

GET https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME

Sostituisci quanto segue:

  • PROJECT_ID: il progetto che contiene l'endpoint.
  • REGION: la regione dell'endpoint.
  • ENDPOINT_NAME: il nome dell'endpoint.

Etichetta un endpoint

Puoi gestire le etichette per gli endpoint. Per istruzioni dettagliate, consulta la pagina relativa all'etichettatura delle risorse.

Eliminazione di un endpoint

Puoi eliminare un endpoint.

Tuttavia, le seguenti configurazioni di Service Directory non vengono eliminate quando elimini l'endpoint:

  • Spazio dei nomi Service Directory
  • Zona DNS di Service Directory

Lo spazio dei nomi di Service Directory e la zona DNS di Service Directory possono essere utilizzati da altri servizi. Verifica che lo spazio dei nomi sia vuoto prima di eliminare lo spazio dei nomi di Service Directory o la zona DNS di Service Directory.

Console

  1. Nella console Google Cloud, vai alla pagina Private Service Connect.

    Vai a Private Service Connect

  2. Fai clic sulla scheda Endpoint connessi.

  3. Seleziona l'endpoint da eliminare, quindi fai clic su Elimina.

gcloud

    gcloud compute forwarding-rules delete \
        ENDPOINT_NAME --region=REGION

Sostituisci quanto segue:

  • ENDPOINT_NAME: il nome dell'endpoint.
  • REGION: la regione dell'endpoint.

API

DELETE https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/forwardingRules/ENDPOINT_NAME

Sostituisci quanto segue:

  • PROJECT_ID: il progetto che contiene l'endpoint.
  • REGION: la regione dell'endpoint.
  • ENDPOINT_NAME: il nome dell'endpoint.

Accedi agli endpoint da reti ibride

I client nelle reti connesse a Google Cloud con collegamenti VLAN per i tunnel Cloud Interconnect o Cloud VPN possono raggiungere gli endpoint Private Service Connect.

  • Il collegamento VLAN o il tunnel Cloud VPN deve terminare nella stessa rete VPC dell'endpoint. I client nelle reti VPC in peering non possono raggiungere gli endpoint.

  • Il traffico client dai collegamenti VLAN o dai tunnel Cloud VPN può raggiungere endpoint in un'altra regione se è configurato l'accesso globale.

  • Sia Dataplane v1 che Dataplane v2 sono supportati per i collegamenti VLAN. Per ulteriori informazioni sulle versioni di Dataplane, consulta Dataplane v2.

Se vuoi accedere all'endpoint utilizzando il relativo nome DNS, devi configurare i sistemi nell'altra rete in modo che possano eseguire query nelle tue zone DNS private.

Se hai implementato le zone DNS private utilizzando Cloud DNS, completa questi passaggi:

  • Crea un criterio del server in entrata nella rete VPC a cui si collega l'altra rete.

  • Identifica i punti di ingresso del forwarding in entrata nella regione in cui si trova il collegamento VLAN o il tunnel Cloud VPN, nella rete VPC a cui si connette l'altra rete.

  • Configura i sistemi e i server dei nomi DNS nell'altra rete per inoltrare i nomi DNS per l'endpoint a un entry point del forwarding in entrata nella stessa regione del collegamento VLAN o del tunnel Cloud VPN che si connette alla rete VPC.

Visualizza zone DNS di Service Directory

Se i prerequisiti per la configurazione DNS automatica sono soddisfatti, viene creata una zona DNS con un nome nel formato NAMESPACE--REGION.

Console

  1. Nella console Google Cloud, vai alla pagina Zone Cloud DNS.

    Vai alle zone di Cloud DNS

  2. Cerca una zona privata con il nome NAMESPACE--REGION.

gcloud

  • Esegui questo comando per elencare tutte le zone DNS private:

    gcloud dns managed-zones list \
        --filter="visibility=private"
    
  • Esegui questo comando per ottenere i dettagli di una zona con il nome NAMESPACE--REGION.

    gcloud dns managed-zones describe NAMESPACE--REGION
    

Se la zona non è presente, visualizza i dettagli dell'endpoint e controlla se la relativa configurazione include un valore per lo spazio dei nomi.

Altri modi per configurare il DNS

Se i prerequisiti per la configurazione DNS automatica non vengono soddisfatti, puoi creare voci DNS in altri modi:

Configura una zona DNS di Service Directory

Se un endpoint è registrato in Service Directory, ma il servizio pubblicato a cui si connette non ha un nome di dominio configurato, non vengono apportate modifiche al DNS.

Se vuoi replicare la configurazione DNS automatica, puoi configurare manualmente una zona DNS di Service Directory supportata dallo spazio dei nomi di Service Directory. Dopo la creazione della zona, le voci DNS per l'endpoint vengono create automaticamente.

Crea una zona DNS di Service Directory con la seguente configurazione:

  • Nome zona: specifica NAMESPACE--REGION, dove NAMESPACE è lo spazio dei nomi in cui è registrato l'endpoint e REGION è la regione in cui viene creato l'endpoint.

  • Nome DNS: il dominio DNS utilizzato dal producer di servizi per i servizi pubblicati. Per queste informazioni, rivolgiti al producer di servizi.

    Il nome DNS potrebbe avere il formato REGION.p.DOMAIN. Ad esempio, se il dominio pubblico del producer di servizi è example.com e il servizio pubblicato è in us-west1, consigliamo di rendere disponibile il servizio utilizzando i nomi di dominio us-west1.p.example.com. Includi un punto finale, ad esempio us-west1.p.example.com.

  • Spazio dei nomi Service Directory: lo spazio dei nomi configurato per questo endpoint.

Visualizza i dettagli dell'endpoint per trovare lo spazio dei nomi e la regione di Service Directory.

Con questa configurazione, se hai configurato una zona DNS di Service Directory con il nome DNS us-west1.p.example.com e crei un endpoint con il nome analytics, viene creato automaticamente un record DNS per analytics.us-west1.p.example.com.

Registra un endpoint con Service Directory

I nuovi endpoint vengono registrati automaticamente in Service Directory. Tuttavia, se un endpoint è stato creato prima dell'abilitazione della registrazione automatica con Service Directory, questa configurazione potrebbe non essere presente.

Puoi eliminare l'endpoint e crearne uno nuovo, che viene registrato automaticamente in Service Directory.

In alternativa, puoi seguire questi passaggi per registrare un endpoint esistente con uno spazio dei nomi di Service Directory.

  1. Crea uno spazio dei nomi Service Directory per l'endpoint, NAMESPACE.

  2. Crea un servizio Service Directory per l'endpoint, SERVICE_NAME.

    Per il servizio, utilizza lo stesso nome della regola di forwarding utilizzata per l'endpoint, ENDPOINT_NAME.

  3. Crea un endpoint Service Directory utilizzando il nome default e utilizza l'indirizzo IP e la porta (443) dell'endpoint.

Dopo aver registrato l'endpoint in Service Directory, segui le istruzioni per configurare una zona DNS di Service Directory.

Configura il DNS manualmente

Se hai impedito la configurazione DNS automatica o se non è abilitata nella tua configurazione, puoi utilizzare Cloud DNS per creare manualmente i record DNS

Per ulteriori informazioni, consulta le seguenti pagine:

  • Controllo degli accessi: il ruolo di amministratore DNS (roles/dns.admin) fornisce le autorizzazioni necessarie per creare zone e record DNS.

  • Crea una zona privata.

    • Quando configuri una zona privata, fornisci un nome DNS. Utilizza il dominio DNS utilizzato dal producer di servizi per i servizi pubblicati. Per queste informazioni, rivolgiti al producer di servizi.

      che potrebbe avere il seguente formato: REGION.p.DOMAIN. Ad esempio, se il dominio pubblico del producer di servizi è example.com e il servizio pubblicato è in us-west1, è consigliabile renderlo disponibile utilizzando i nomi di dominio us-west1.p.example.com.

  • Aggiungi un record.

Risoluzione dei problemi

La creazione della zona DNS privata non è riuscita

Quando crei un endpoint, viene creata una zona DNS di Service Directory. La creazione della zona può non riuscire per i seguenti motivi:

  • Non hai abilitato l'API Cloud DNS nel tuo progetto.

  • Non disponi delle autorizzazioni necessarie per creare una zona DNS di Service Directory.

  • In questa rete VPC esiste una zona DNS con lo stesso nome di zona.

  • Esiste già una zona DNS per lo stesso nome di dominio in questa rete VPC.

Per creare manualmente la zona DNS di Service Directory:

  1. Verifica che l'API Cloud DNS sia abilitata nel tuo progetto.

  2. Verifica di disporre delle autorizzazioni necessarie per creare la zona DNS di Service Directory:

    • dns.managedZones.create
    • dns.networks.bindPrivateDNSZone
    • servicedirectory.namespaces.associatePrivateZone
  3. Se esiste una zona in conflitto, ma non è più necessaria, elimina la zona DNS.

  4. Crea una zona DNS di Service Directory supportata dallo spazio dei nomi di Service Directory associato al tuo endpoint.

La creazione degli endpoint non riesce se è configurato l'accesso globale

Non tutti i servizi pubblicati di Private Service Connect supportano gli endpoint con accesso globale. Se crei un endpoint con accesso globale e il servizio pubblicato non lo supporta, viene visualizzato questo messaggio di errore:

Private Service Connect global access is not supported for the given forwarding rule, since its producer service does not support consumer global access.

Crea l'endpoint senza l'opzione di accesso globale.

La creazione dell'endpoint è riuscita, ma la connettività non è stabilita

Se crei correttamente un endpoint per i servizi pubblicati, ma la connettività non è stabilita, controlla lo stato della connessione dell'endpoint. Lo stato della connessione potrebbe indicare i passaggi da seguire per risolvere il problema.