Accéder aux API Google régionales via des backends

Ce guide explique comment configurer un équilibreur de charge d'application interne avec un backend Private Service Connect pour accéder à une API Google régionale.

Pour plus d'informations sur les backends, consultez la section À propos des backends.

Un équilibreur de charge d'application interne utilisé pour Private Service Connect est accessible à partir de réseaux VPC partagés et de réseaux connectés.

Rôles

Le rôle d'administrateur de l'équilibreur de charge Compute (roles/compute.loadBalancerAdmin) contient l'autorisation requise pour effectuer les tâches décrites dans ce guide.

Services compatibles

Consultez la liste des points de terminaison de service régionaux compatibles.

Avant de commencer

  • Activez l'API Compute Engine dans votre projet.

  • Si vous souhaitez enregistrer la règle de transfert pour l'équilibrage de charge avec l'Annuaire des services, activez l'API de l'Annuaire des services dans votre projet. Pour configurer l'Annuaire des services, vous devez créer la règle de transfert à l'aide de Google Cloud CLI ou de l'API.

  • Créez un sous-réseau proxy réservé si vous n'en avez pas déjà un. Il doit y avoir un seul sous-réseau proxy réservé dans le réseau VPC et la région dans lesquels vous souhaitez créer l'équilibreur de charge d'application interne. Ce sous-réseau est utilisé par tous les équilibreurs de charge d'application internes dans ce réseau et cette région.

  • Si vous ne les possédez pas déjà, créez une clé privée et un certificat autogéré pour votre domaine. Consultez l'étape 1 de l'utilisation des certificats SSL autogérés. Vous avez besoin d'une clé privée et d'un certificat pour créer le proxy HTTPS cible lorsque vous configurez l'équilibreur de charge.

Créer un groupe de points de terminaison du réseau

Pour chaque service que vous souhaitez rendre disponible à l'aide de l'équilibreur de charge, créez un groupe de points de terminaison du réseau (NEG) Private Service Connect.

Console

  1. Dans la console Google Cloud, accédez à la page Groupes de points de terminaison du réseau.

    Accéder à la page Groupes de points de terminaison du réseau

  2. Cliquez sur Créer un groupe de points de terminaison du réseau.

  3. Saisissez le nom du groupe de points de terminaison du réseau.

  4. Pour le type de groupe de points de terminaison du réseau, sélectionnez Groupe de points de terminaison du réseau (Private Service Connect).

  5. Sélectionnez la région du groupe de points de terminaison du réseau.

  6. Sélectionnez le service cible du groupe de points de terminaison du réseau.

  7. Cliquez sur Créer.

gcloud

gcloud compute network-endpoint-groups create NEG_NAME \
    --network-endpoint-type=private-service-connect \
    --psc-target-service=TARGET_SERVICE \
    --region=REGION

Remplacez les éléments suivants :

  • NEG_NAME : nom du groupe de points de terminaison du réseau.

  • TARGET_SERVICE : service cible auquel vous souhaitez vous connecter. Consultez la liste des points de terminaison de service régionaux compatibles.

  • REGION : région dans laquelle créer le groupe de points de terminaison du réseau. La région doit être la même que celle du service auquel vous souhaitez vous connecter.

Configurer l'équilibreur de charge

Tous les composants de l'équilibreur de charge doivent être créés dans la même région que le groupe de points de terminaison du réseau Private Service Connect.

Console

Démarrer la configuration

  1. Dans Google Cloud Console, accédez à la page Équilibrage de charge.

    Accéder à la page "Équilibrage de charge"

  2. Cliquez sur Créer un équilibreur de charge.
  3. Dans le champ Type d'équilibreur de charge, sélectionnez Équilibreur de charge d'application (HTTP/HTTPS), puis cliquez sur Suivant.
  4. Pour Public ou interne, sélectionnez Interne, puis cliquez sur Suivant.
  5. Pour Déploiement interrégional ou dans une seule région, sélectionnez Recommandé pour les charges de travail régionales, puis cliquez sur Suivant.
  6. Cliquez sur Configurer.

Configuration de base

  1. Dans le champ Name (Nom), saisissez le nom de l'équilibreur de charge.
  2. Sélectionnez une région pour l'équilibreur de charge.
  3. Sélectionnez un réseau pour l'équilibreur de charge.

    Le réseau doit contenir un sous-réseau proxy réservé dans la région dans laquelle vous créez le NEG et l'équilibreur de charge. Si vous n'en avez pas, vous pouvez cliquer sur Réserver un sous-réseau pour en créer un.

  4. Laissez la fenêtre ouverte pour continuer.

Configuration du backend

Le groupe de points de terminaison du réseau Private Service Connect est un type de backend d'équilibreur de charge. Vous créez un service de backend pour chaque backend que vous souhaitez configurer.

  1. Cliquez sur Backend configuration (Configuration du backend).
  2. Pour chaque groupe de points de terminaison du réseau Private Service Connect que vous souhaitez configurer, créez un service de backend.

    1. Dans le menu Créer ou sélectionner des services de backend, sélectionnez Créer un service backend.
    2. Dans le champ Name (Nom), saisissez le nom du service de backend.
    3. Définissez le type de backend sur Groupe de points de terminaison du réseau Private Service Connect.
    4. Définissez le type de cible Private Service Connect sur API Google régionale.
    5. Sélectionnez HTTPS pour le protocole.

    6. Dans la section Backends, cliquez sur le menu Nouveau backend, puis sélectionnez le groupe de points de terminaison du réseau Private Service Connect.

      Si vous devez créer un groupe de points de terminaison du réseau Private Service Connect, cliquez sur Créer un groupe de points de terminaison du réseau Private Service Connect.

Règles de routage

L'ensemble de règles permettant d'acheminer les requêtes HTTPS entrantes vers des services de backend ou des buckets backend spécifiques est appelé un mappage d'URL. Pour en savoir plus sur les mappages d'URL, consultez Présentation des mappages d'URL.

Si vous ne configurez qu'un seul service de backend pour l'équilibreur de charge, la règle de routage par défaut est suffisante et vous pouvez passer directement à la section Configuration du frontend.

  1. Si vous possédez plusieurs services de backend, cliquez sur Règles de routage.
  2. Sélectionnez Règle simple d'hôte et de chemin d'accès.
  3. Pour chaque backend, procédez comme suit :
    1. Ajoutez une règle d'hôte et de chemin d'accès.
    2. Dans le champ Hôte, saisissez le nom d'hôte qui servira à envoyer des requêtes à ce service, par exemple pubsub.example.com.
    3. Dans le champ Chemins d'accès, saisissez le chemin d'accès, par exemple, /*.
    4. Pour Backends, sélectionnez le service de backend.

Configuration du frontend

  1. Cliquez sur Frontend configuration (Configuration du frontend).
  2. Cliquez sur Ajouter une adresse IP et un port frontend.
  3. Dans le champ Name (Nom), saisissez le nom de l'équilibreur de charge.
  4. Dans le champ Protocole, sélectionnez HTTPS (inclut HTTP/2).
  5. Sélectionnez un sous-réseau pour l'équilibreur de charge.
  6. Assurez-vous que le port est défini sur la valeur 443 pour autoriser le trafic HTTPS.
  7. Pour Adresse IP, sélectionnez une adresse IP dans le menu.

    Si vous souhaitez réserver une nouvelle adresse IP, cliquez sur Créer une adresse IP.

  8. Cliquez sur la liste déroulante Certificat.

    1. Si vous possédez déjà une ressource de certificat SSL autogérée que vous souhaitez utiliser, sélectionnez-la dans le menu.
    2. Sinon, sélectionnez Créer un certificat.
    3. Saisissez le nom de la ressource de certificat.
    4. Dans les champs appropriés, importez vos fichiers au format PEM :
      • Certificat
      • Clé privée
    5. Cliquez sur Créer.
  9. Cliquez sur OK.

Vérifier et finaliser

  1. Cliquez sur Vérifier et finaliser pour vérifier la configuration.
  2. Cliquez sur Créer.

gcloud

  1. Pour chaque groupe de points de terminaison du réseau que vous avez créé, créez un service de backend.

    gcloud compute backend-services create BACKEND_SERVICE_NAME \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --protocol=HTTPS \
        --region=REGION
    

    Remplacez les éléments suivants :

    • BACKEND_SERVICE_NAME : nom du service de backend.
    • REGION : région dans laquelle créer le service de backend.
  2. Pour chaque service de backend que vous avez créé, ajoutez le NEG correspondant au service de backend.

    gcloud compute backend-services add-backend BACKEND_SERVICE_NAME \
        --network-endpoint-group=NEG_NAME \
        --region=REGION
    

    Remplacez les éléments suivants :

    • BACKEND_SERVICE_NAME : nom du service de backend.
    • NEG_NAME : nom du groupe de points de terminaison du réseau.
    • REGION : région du backend.
  3. Créez un mappage d'URL pour l'équilibreur de charge.

    Un mappage d'URL doit faire référence à un service de backend par défaut. Si vous configurez votre équilibreur de charge avec un service de backend, définissez ce service de backend par défaut. Si vous configurez votre équilibreur de charge pour qu'il utilise plusieurs services de backend, référencés par des règles d'hôte et des outils de mise en correspondance des chemins d'accès que vous allez créer à l'étape suivante, choisissez l'un des services de backend comme mappage d'URL par défaut.

    gcloud compute url-maps create URL_MAP_NAME \
        --default-service=DEFAULT_BACKEND_SERVICE_NAME \
        --region=REGION
    

    Remplacez les éléments suivants :

    • URL_MAP_NAME : nom du mappage d'URL.

    • DEFAULT_BACKEND_SERVICE_NAME : nom de la valeur par défaut de l'équilibreur de charge. La valeur par défaut est utilisée lorsqu'aucune règle d'hôte ne correspond au nom d'hôte demandé.

    • REGION : région dans laquelle créer le mappage d'URL.

  4. Ajoutez des services de backend supplémentaires au mappage d'URL.

    Si votre mappage d'URL doit référencer deux ou plusieurs services de backend, procédez comme suit. Si votre mappage d'URL ne fait référence qu'à un seul service de backend, ignorez cette étape.

    1. Pour chaque service de backend, ajoutez un outil de mise en correspondance des chemins d'accès. Vous devez créer un outil de mise en correspondance des chemins d'accès pour chaque service de backend.

      gcloud compute url-maps add-path-matcher URL_MAP_NAME \
          --path-matcher-name=PATH_MATCHER \
          --default-service=BACKEND_SERVICE_NAME \
          --region=REGION
      

      Remplacez les éléments suivants :

      • URL_MAP_NAME : nom du mappage d'URL.
      • PATH_MATCHER : nom de l'outil de mise en correspondance des chemins d'accès.
      • BACKEND_SERVICE_NAME : nom du service de backend.
      • REGION : région du mappage d'URL.
    2. Pour chaque nom d'hôte, ajoutez une règle d'hôte.

      Chaque règle d'hôte ne peut référencer qu'un seul outil de mise en correspondance des chemins d'accès, mais deux règles d'hôte ou plus peuvent faire référence à un même outil de mise en correspondance des chemins d'accès.

      gcloud compute url-maps add-host-rule URL_MAP_NAME \
          --hosts=HOST \
          --path-matcher-name=PATH_MATCHER \
          --region=REGION
      

      Remplacez les éléments suivants :

      • URL_MAP_NAME : nom du mappage d'URL.
      • HOST : nom de l'hôte auquel envoyer les requêtes pour ce service. Exemple :pubsub.example.com
      • PATH_MATCHER : nom de l'outil de mise en correspondance des chemins d'accès.
      • REGION : région du mappage d'URL.
  5. Créez le proxy HTTPS cible.

    1. Créez un certificat SSL régional à l'aide de la commande gcloud compute ssl-certificates create. Les certificats gérés par Google ne sont pas compatibles avec les équilibreurs de charge d'application internes.

      gcloud compute ssl-certificates create CERTIFICATE \
          --certificate=LB_CERT \
          --private-key=LB_PRIVATE_KEY \
          --region=REGION
      

      Remplacez les éléments suivants :

      • CERTIFICATE : nom du certificat.

      • LB_CERT : chemin d'accès au fichier de certificat au format PEM de votre certificat autogéré.

      • LB_PRIVATE_KEY : chemin d'accès au fichier de clé privée au format PEM pour votre certificat autogéré.

      • REGION : région du certificat.

    2. Utilisez la ressource de certificat SSL régional pour créer le proxy HTTPS cible à l'aide de la commande gcloud compute target-https-proxies create.

      gcloud compute target-https-proxies create PROXY_NAME \
          --url-map=URL_MAP_NAME \
          --region=REGION \
          --ssl-certificates=CERTIFICATE
      

      Remplacez les éléments suivants :

      • PROXY_NAME : nom du proxy HTTPS cible.
      • URL_MAP_NAME : nom du mappage d'URL.
      • REGION : région de la ressource de certificat.
      • CERTIFICATE : nom de la ressource de certificat.
  6. Réservez une adresse IPv4 interne régionale pour la règle de transfert.

    gcloud compute addresses create ADDRESS_NAME \
        --ip-version=IPV4 \
        --region=REGION \
        --subnet=SUBNETWORK
    

    Remplacez les éléments suivants :

    • ADDRESS_NAME : nom de la ressource d'adresse IP.
    • REGION : région dans laquelle créer l'adresse IP.
    • SUBNET : sous-réseau dans lequel créer l'adresse IP.

    Exécutez cette commande pour afficher l'adresse IP réservée. Une fois l'équilibreur de charge créé, vous pouvez utiliser l'adresse IP pour vérifier la configuration.

    gcloud compute addresses describe ADDRESS_NAME \
        --format="get(address)" --region=REGION
    
  7. Créez la règle de transfert.

    Créez la règle de transfert à l'aide de la commande gcloud compute forwarding-rules create.

    gcloud compute forwarding-rules create FWD_RULE \
        --load-balancing-scheme=INTERNAL_MANAGED \
        --network=NETWORK \
        --address=ADDRESS_NAME \
        --ports=443 \
        --region=REGION \
        --target-https-proxy=PROXY_NAME \
        --target-https-proxy-region=PROXY_REGION \
       [--service-directory-registration=SD_SERVICE_NAME]
    

    Remplacez les éléments suivants :

    • FWD_RULE : nom de la règle de transfert.

    • NETWORK : région dans laquelle créer la règle de transfert.

    • ADDRESS_NAME : adresse IP réservée.

    • REGION : région de la règle de transfert.

    • PROXY_NAME : nom du proxy HTTPS cible.

    • PROXY_REGION : région du proxy HTTPS cible.

    • SD_SERVICE_NAME : URI du service Service Directory avec lequel vous souhaitez enregistrer l'équilibreur de charge, au format suivant : projects/PROJECT/locations/REGION/namespaces/NAMESPACE_NAME/services/SERVICE_NAME. La spécification de --service-directory-registration est facultative.

Vérifier la configuration

  1. Créez l'instance de VM.

    gcloud compute instances create VM_NAME \
        --network=NETWORK \
        --image-project=debian-cloud --image-family=debian-12 \
        --zone=ZONE
    

    Remplacez les éléments suivants :

    • VM_NAME : nom de la machine virtuelle.

    • NETWORK : réseau de la VM.

    • ZONE : zone de la VM.

  2. Connectez-vous à la VM.

    gcloud compute ssh VM_NAME --zone=ZONE
    
  3. Utilisez curl pour vérifier la configuration. Cette commande définit l'en-tête Host et contourne la résolution DNS en spécifiant une adresse IP définie par l'utilisateur. Vous pouvez omettre le port si vous utilisez le port par défaut du protocole, par exemple à l'aide du port 443 pour HTTPS.

    Si nécessaire, vous pouvez ignorer la validation du certificat à l'aide de l'indicateur -k. Vous devrez peut-être ignorer la validation si vous avez utilisé un certificat autosigné pour configurer le proxy HTTPS cible, ou si la VM ne dispose pas du certificat de l'autorité de certification qui a signé votre certificat.

    curl -iv --resolve HOSTNAME:443:IP_ADDRESS \
       'https://HOSTNAME/RESOURCE_URI'
    

    Remplacez les éléments suivants :

    • HOSTNAME: nom d'hôte que vous avez configuré dans votre mappage d'URL (par exemple, pubsub.example.com).
    • IP_ADDRESS: adresse IP de la règle de transfert de votre équilibreur de charge.
    • RESOURCE_URI : reste de l'URI de la ressource que vous souhaitez utiliser pour la validation. Par exemple, si l'équilibreur de charge transfère les requêtes vers un point de terminaison régional pour Pub/Sub, vous pouvez utiliser rest?version=v1.

Configurer les enregistrements DNS

Configurez les enregistrements DNS de chaque hôte ajouté au mappage d'URL, en pointant vers l'adresse IP de la règle de transfert. Si vous gérez le DNS à l'aide de Cloud DNS, consultez la section Ajouter, modifier et supprimer des enregistrements. Sinon, configurez les enregistrements DNS sur votre serveur DNS.

Par exemple, supposons que vous ayez créé les configurations suivantes:

  • Un NEG Private Service Connect qui utilise le service cible pubsub.europe-west3.rep.googleapis.com.

  • Un équilibreur de charge d'application interne qui utilise ce NEG Private Service Connect en tant que backend.

  • Un mappage d'URL qui définit une règle d'hôte pour pubsub.example.com.

Pour que cette configuration fonctionne correctement, vous devez créer un enregistrement DNS qui pointe pubsub.example.com vers l'adresse IP de la règle de transfert.

Avec cette configuration, toutes les requêtes envoyées à pubsub.example.com sont envoyées à l'équilibreur de charge, qui transfère la requête à pubsub.europe-west3.rep.googleapis.com.

Configurer les clients pour qu'ils envoient des requêtes au backend

Pour envoyer des requêtes via le backend au lieu des points de terminaison de service publics, vous devez configurer les clients pour qu'ils envoient des requêtes au nom d'hôte que vous avez défini dans le mappage d'URL de l'équilibreur de charge (par exemple, pubsub.example.com). 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. Les pages suivantes incluent les étapes de configuration pour certains clients courants:

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

Accéder au backend à partir d'hôtes sur site

Si votre réseau sur site est connecté à un réseau VPC, vous pouvez envoyer le trafic vers le backend Private Service Connect.

  • Votre réseau sur site doit être connecté au réseau VPC contenant votre équilibreur de charge d'application interne à l'aide de tunnels Cloud VPN ou de rattachements de VLAN situés dans la même région que l'équilibreur de charge d'application interne.

  • Le réseau sur site doit disposer de routes appropriées vers votre équilibreur de charge d'application interne. Assurez-vous que chaque routeur Cloud Router gérant la session BGP pour le tunnel Cloud VPN ou le rattachement de VLAN a été configuré de façon à annoncer la plage d'adresses IP principale du sous-réseau utilisé par la règle de transfert de votre équilibreur de charge d'application interne. Les routeurs Cloud Router annoncent par défaut les routes de sous-réseau.

  • Vous devez configurer des systèmes sur site afin que les noms d'hôte dans le mappage d'URL de votre équilibreur de charge d'application interne correspondent à l'adresse IP de la règle de transfert de l'équilibreur de charge d'application interne. Vous pouvez créer les enregistrements DNS sur les serveurs de noms sur site ou utiliser Cloud DNS.

    Si vous avez créé les enregistrements DNS à l'aide de zones privées gérées Cloud DNS, procédez comme suit :

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

    • Identifiez les points d'entrée du système de transfert entrant dans les régions où se trouvent vos tunnels Cloud VPN et vos rattachements de VLAN, dans le réseau VPC auquel votre réseau sur site se connecte.

    • Configurez les serveurs de noms DNS sur site pour transférer les requêtes DNS pour les noms d'hôte dans le mappage d'URL vers un point d'entrée du système de transfert entrant Cloud DNS.

Figure 1. En configurant Private Service Connect, Cloud Router et des hôtes sur site, vous pouvez vous connecter aux API et services Google à l'aide de backends régionaux (cliquez pour agrandir).