Accéder aux API Google régionales via des points de terminaison

Ce document explique comment utiliser des points de terminaison Private Service Connect pour se connecter aux points de terminaison régionaux des API Google compatibles.

Pour plus d'informations sur les autres configurations de Private Service Connect, consultez la page Private Service Connect.

Rôles

Pour obtenir les autorisations nécessaires pour créer un point de terminaison Private Service Connect régional, demandez à votre administrateur de vous accorder les rôles IAM suivants sur le réseau VPC :

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Vous pouvez également obtenir les autorisations requises via des rôles personnalisés ou d'autres rôles prédéfinis.

Avant de commencer

  1. Installez Google Cloud CLI, puis initialisez-la en exécutant la commande suivante :

    $ gcloud init

  2. Activer les API Compute Engine, Network Connectivity Center, Cloud DNS, and Service Directory.

    Activer les API

  3. Activez les API Google auxquelles vous souhaitez accéder via les points de terminaison Private Service Connect à l'aide de la page API et services de la console Google Cloud. Private Service Connect n'active pas automatiquement les API.

  4. Assurez-vous que les règles de pare-feu de sortie autorisent le trafic vers le point de terminaison. La configuration de pare-feu par défaut d'un réseau VPC autorise ce trafic, car elle contient une règle implicite de sortie autorisée. Vérifiez que vous n'avez pas créé de règle de sortie de priorité plus élevée qui bloque le trafic.

  5. Consultez les problèmes connus.

Créer un point de terminaison Private Service Connect régional

Vous pouvez créer un point de terminaison Private Service Connect régional afin d'envoyer des requêtes à un point de terminaison régional pour une API Google cible.

Pour obtenir la liste des points de terminaison régionaux disponibles, consultez la section Régions et services compatibles.

Les noms d'hôte des points de terminaison régionaux se présentent sous deux formes :

  • Noms d'hôtes publics : SERVICE.REGION.rep.DOMAIN
  • Noms d'hôte privés : SERVICE.REGION.p.rep.DOMAIN

    Le nom d'hôte privé ajoute un sous-domaine p entre REGION et rep.

Lorsque vous configurez l'API Google cible, vous spécifiez la forme privée du nom d'hôte, par exemple spanner.me-central2.p.rep.googleapis.com. Après avoir créé le point de terminaison, vous créez un enregistrement DNS privé pour le point de terminaison, à l'aide du même nom d'hôte privé du point de terminaison régional.

Bien que vous puissiez stipuler n'importe quel nom pour le point de terminaison Private Service Connect, nous vous recommandons d'utiliser le nom de service de l'API Google cible, de sorte que le nom DNS corresponde au nom du point de terminaison, ceci afin de faciliter la maintenance. Par exemple, si le point de terminaison est associé à une cible spanner.me-central2.p.rep.googleapis.com, utilisez spanner comme nom du point de terminaison.

gcloud

Exécutez la commande regional-endpoints create.

gcloud beta network-connectivity regional-endpoints create ENDPOINT_NAME \
    --region=REGION \
    --network=NETWORK_URI \
    --subnetwork=SUBNET_URI \
    --target-google-api=REP_NAME

Si vous souhaitez que le point de terminaison soit disponible pour les ressources d'autres régions, ajoutez l'option --enable-global-access.

Remplacez les éléments suivants :

  • ENDPOINT_NAME : nom du point de terminaison.

  • REGION : région dans laquelle vous souhaitez créer le point de terminaison.

  • NETWORK_URI : URI du réseau VPC pour le point de terminaison : projects/PROJECT_ID/global/networks/NETWORK_NAME.

  • SUBNET_URI : URI du sous-réseau auquel vous souhaitez connecter le point de terminaison : projects/PROJECT_ID/regions/SUBNET_NAME.

  • REP_NAME : nom du point de terminaison de service régional auquel vous souhaitez vous connecter. Exemple : spanner.me-central2.p.rep.googleapis.com.

Répertorier les points de terminaison

Vous pouvez répertorier tous les points de terminaison configurés.

gcloud

Exécutez la commande regional-endpoints list.

gcloud beta network-connectivity regional-endpoints list \
    --region=REGION

Remplacez REGION par la région correspondant aux points de terminaison que vous souhaitez lister.

Vérifier que le point de terminaison fonctionne

Créez une instance de machine virtuelle (VM) dans le réseau VPC et la région dans lesquels le point de terminaison est configuré. Exécutez la commande suivante sur la VM pour vérifier que le point de terminaison Private Service Connect fonctionne. Les points de terminaison ne répondent pas aux requêtes ping (ICMP).

curl --connect-to SERVICE.REGION.p.rep.DOMAIN:443:ENDPOINT_IP:443 \
'SERVICE.REGION.p.rep.DOMAIN/PATH'

Remplacez les éléments suivants :

  • SERVICE : service ciblé par votre point de terminaison. Par exemple, spanner ou logging.
  • REGION : région du point de terminaison.
  • DOMAIN : domaine du service. Exemple : googleapis.com.
  • ENDPOINT_IP : adresse IP du point de terminaison.
  • PATH : chemin d'accès à une ressource diffusée par ce service. Par exemple, de nombreux services proposent un document de découverte, accessible via le chemin d'accès $discovery/rest?version=v1.

L'exemple de requête suivant vérifie qu'un point de terminaison disposant de l'adresse IP 192.168.1.100 peut demander le document de découverte de l'API Cloud Spanner au point de terminaison régional situé dans la région me-central2.

curl --connect-to spanner.me-central2.p.rep.googleapis.com:443:192.168.1.100:443 \
'https://spanner.me-central2.p.rep.googleapis.com/$discovery/rest?version=v1'

Créer une entrée DNS privée pour le point de terminaison

Vous devez créer des entrées DNS pour les points de terminaison en respectant le format suivant : SERVICE.REGION.p.rep.DOMAIN. Vous pouvez utiliser Cloud DNS pour créer les entrées DNS.

  1. Créez une zone DNS privée au format suivant : REGION.p.rep.DOMAIN.

    Par exemple, si vous souhaitez utiliser un point de terminaison régional dans le domaine googleapis.com et dans la région me-central2, créez une zone DNS privée portant ce nom : me-central2.p.rep.googelapis.com.

  2. Créez un enregistrement DNS qui pointe vers l'adresse IP attribuée au point de terminaison. Le nom d'hôte doit correspondre au nom du service, SERVICE. Par exemple, spanner ou logging sont des noms de service.

Par exemple, si votre point de terminaison est configuré avec la cible spanner.me-central2.p.rep.googleapis.com, vous créez une zone DNS privée appelée me-central2.p.rep.googelapis.com et un enregistrement A appelé spanner, qui pointe vers l'adresse IP du point de terminaison. Le nom de domaine complet du point de terminaison est spanner.me-central2.p.rep.googelapis.com.

Configurer les clients pour qu'ils utilisent le nom du point de terminaison privé

Vous devez configurer les clients pour qu'ils utilisent des noms DNS privés à la place des noms DNS publics. Consultez la documentation de votre client ou de votre bibliothèque cliente, afin de savoir comment le configurer pour qu'il utilise des points de terminaison personnalisés. Exemple :

  • Python : vous pouvez configurer api_endpoint dans la section Options client.

  • Go : vous pouvez configurer WithEndpoint dans ClientOptions.

  • .NET : vous pouvez configurer Endpoint dans la classe de compilateur du client.

  • gcloud : vous pouvez configurer api_endpoint_overrides dans la gcloud CLI.

Obtenir des informations détaillées sur un point de terminaison

Vous pouvez afficher les détails de configuration d'un point de terminaison.

gcloud

Exécutez la commande regional-endpoints list describe.

gcloud beta network-connectivity regional-endpoints describe \
    ENDPOINT_NAME --region=REGION

Remplacez les éléments suivants :

  • ENDPOINT_NAME : nom du point de terminaison.
  • REGION : région du point de terminaison.

Supprimer un point de terminaison

Vous pouvez supprimer un point de terminaison.

gcloud

Exécutez la commande regional-endpoints list delete.

gcloud beta network-connectivity regional-endpoints delete \
    ENDPOINT_NAME --region=REGION

Remplacez les éléments suivants :

  • ENDPOINT_NAME : nom du point de terminaison.
  • REGION : région du point de terminaison.

Accéder aux points de terminaison à partir de réseaux hybrides

Les clients des réseaux connectés à Google Cloud avec des rattachements de VLAN pour les tunnels Cloud Interconnect ou Cloud VPN peuvent atteindre les points de terminaison Private Service Connect.

  • Le rattachement de VLAN ou le tunnel Cloud VPN doit se terminer dans même réseau VPC que le point de terminaison. Les clients des réseaux VPC appairés ne peuvent pas atteindre les points de terminaison.

  • Le trafic client provenant de rattachements de VLAN ou de tunnels Cloud VPN peut atteindre des points de terminaison dans une autre région si l'accès mondial est configuré.

  • Dataplane v1 et Dataplane v2 sont compatibles avec les rattachements de VLAN. Pour plus d'informations sur les versions de Dataplane, consultez la page Dataplane v2.

Vous devez configurer des systèmes sur l'autre réseau afin qu'ils puissent envoyer des requêtes à vos zones DNS privées.

Si vous avez mis en œuvre les zones DNS privées à l'aide de Cloud DNS, procédez comme suit :

  • Créez une règle de serveur entrant dans le réseau VPC auquel votre autre réseau se connecte.

  • Identifiez les points d'entrée du redirecteur entrant dans la région où se trouve votre rattachement de VLAN ou votre tunnel Cloud VPN, dans le réseau VPC auquel votre autre réseau se connecte.

  • Configurez les systèmes et les serveurs de noms DNS de l'autre réseau pour transférer les noms DNS du point de terminaison vers un point d'entrée du redirecteur entrant, dans la même région que celle du rattachement de VLAN ou du tunnel Cloud VPN qui se connecte au réseau VPC.

Problèmes connus

  • Lorsque vous créez un point de terminaison Private Service Connect régional, il est visible dans la console Google Cloud avec un nom généré automatiquement, qui respecte le format suivant : rep-autogen-fr-ENDPOINT_NAME. Veillez toutefois à ne pas modifier le point de terminaison à l'aide de la console Google Cloud, ou en éditant la règle de transfert.

    Si vous devez modifier le nom du point de terminaison ou activer l'accès mondial, supprimez le point de terminaison et créez-en un autre.